Linux系统卡顿处理记录(Debian)

问题现象描述

现象linux操作系统卡顿(就是很慢),但是系统任然能够使用。

文章一步步的排查并且定位问题。

排查步骤

  1. 使用top命令查看CPU是否占用过高。(未发现)排除问题

  2. 使用df -h查看硬盘是否被占满。(未发现)排除问题

  3. 使用cat命令在/tmp目录下执行速度很快,在/home/xxx 目录先执行很慢。(猜测和硬盘有关)但是他们是同一块硬盘。由于该问题在很多电脑上都出现暂时排除硬盘坏道导致。(猜测和硬盘读写有关,如果硬盘读写被占满有可能会导致读写速度缓慢的情况)

使用一下命令查看IO状态

复制代码
# 安装
sudo apt-get install iotop

sudo iotop

未发现文件读写很多的情况。

  1. 发现vim和cat命令都很卡,所以直接使用strace定位cat命令的问题。

    sudo apt install strace
    strace -tt -o tt.log cat xxxx

发现在这个位置执行了快2分钟。大概率问题就在这里。

在日志中看头看到这样的的读取,这个非系统so文件。

通过16923可以知道进程,问题大概定位到那个应用导致的。

  1. 通过进程号查找进程环境变量

    cat /proc/进程号/environ

最终发现该进程PRE_LOAD了一个so文件,该so文件修改了读取文件的函数逻辑导致程序卡顿。

他其实是一个监控软件,监控系统文件读写情况(安全相关)

  1. 通过进程号查应用

ps -ef | grep 进程ID

通过dpkg -S 查询应用名称。

strace命令使用

strace 是一个用于跟踪程序系统调用的Linux命令。它可以记录程序执行时与操作系统内核之间的交互,包括系统调用、信号传递、进程间通信等。下面我将以教程的方式分点说明如何使用 strace命令,并附带一个简单的案例。

1.安装 strace

在大多数Linux发行版中,`strace` 工具是预装的。如果你的系统没有安装,你可以使用包管理器安装它。

  • 在Debian/Ubuntu系统中使用以下命令安装:

    复制代码
    sudo apt-get install strace
  • 在Red Hat/CentOS系统中使用以下命令安装:

    sudo yum install strace

2. 基本使用

要使用 `strace`,只需在终端中输入命令,然后跟上要跟踪的命令。例如:

复制代码
strace ls

这将会显示 `ls` 命令的系统调用。

3. 输出到文件

你可以将 `strace` 的输出保存到文件中,以便后续分析:

```bash

strace -o output.txt ls

```

4. 显示系统调用的详细信息

默认情况下,`strace` 只会显示系统调用的名称。如果你想要查看更详细的信息,可以使用 `-v` 选项:

```bash

strace -v ls

```

5. 跟踪特定系统调用

如果你只对特定的系统调用感兴趣,你可以使用 `-e` 选项来指定:

```bash

strace -e open ls

```

以上命令将只跟踪 `open` 系统调用。

6. 案例:跟踪一个程序

让我们以一个简单的C程序为例。假设有一个名为 `example.c` 的C程序:```c

复制代码
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

首先,编译这个程序:

复制代码
gcc -o example example.c

然后,使用 `strace` 跟踪这个程序:

复制代码
strace ./example

这将输出 `example` 程序执行期间的所有系统调用信息,包括文件操作、内存分配等。

以上就是使用 `strace` 的基本教程和一个简单的案例。请注意,`strace` 可以提供非常详细的输出,因此在分析大型程序时可能需要使用其他工具来处理和筛选输出。

相关推荐
无足鸟ICT1 小时前
【RHCA+】安装Tuned
linux·服务器·centos
测试界的小码农6 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
一条破秋裤8 小时前
【1114】【并发控制】【笔记】
linux
2035去旅行9 小时前
ADB的底层原理
linux·adb·嵌入式·arm·soc
武子康9 小时前
单卡 A6000 跑 Qwen-Drive:怎样留下可比较的第一条基线?
linux·人工智能·深度学习
女神下凡9 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽9 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
爱和冰阔落14 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
say_fall16 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
ö Constancy16 小时前
一台电脑的硬件组成与作用:按功能分类详解(Windows 与 Linux 视角)
linux·windows·电脑