在Linux 中使用 pidstat 命令监控进程性能
-
检查系统是否已经安装了
pidstat
打开终端,输入以下命令检查是否已经安装了pidstat
:pidstat -V
如果显示版本信息,说明已经安装,可以跳过安装步骤。如果提示找不到命令,那么继续下一步安装。
-
更新包管理器 在安装
pidstat
前,建议先更新系统的包管理器来获取最新的软件包列表。可以使用以下命令:对于基于
Debian
或Ubuntu
的系统:sudo apt update
对于基于
Red Hat
、CentOS
或Fedora
的系统:sudo yum update
-
安装 sysstat 包
pidstat
是sysstat
工具包的一部分,因此我们需要安装sysstat
来获取pidstat
。对于基于
Debian
或Ubuntu
的系统:sudo apt install sysstat
对于基于
Red Hat
、CentOS
或Fedora
的系统:sudo yum install sysstat
-
验证安装 安装完成后,验证
pidstat
是否已经成功安装:pidstat -V
你应该看到类似以下的输出,表示
pidstat
已经安装成功:sysstat version: 11.7.3
pidstat version: 11.7.3
二、使用 pidstat
监控进程
pidstat
可以监控多个指标,如 CPU 使用率、内存使用情况、I/O 操作等。接下来,我们将详细介绍如何使用不同的选项来监控进程。
1. 查看 CPU 使用情况
要查看所有进程的 CPU 使用情况,使用以下命令:
pidstat
这将显示每个进程的 CPU 使用率,输出结果包括以下信息:
-
PID
: 进程 ID。 -
%usr
: 用户态 CPU 使用率。 -
%system
: 内核态 CPU 使用率。 -
%CPU
: 总的 CPU 使用率。
如果你想在一段时间内持续监控进程的 CPU 使用情况,可以使用以下格式的命令:
pidstat 2 5
这意味着每隔 2 秒刷新一次数据,共显示 5 次。可以根据需要调整刷新间隔和次数。
2. 查看指定进程的 CPU 使用情况
要查看某个特定进程的 CPU 使用情况,假设进程的 PID 为 1234
,可以使用以下命令:
pidstat -p 1234
这将只显示该进程的 CPU 使用情况。
3. 查看内存使用情况
要查看所有进程的内存使用情况,可以使用 -r
选项:
pidstat -r
这将显示以下与内存相关的信息:
-
minflt/s
: 每秒次级页面错误数。 -
majflt/s
: 每秒主页面错误数。 -
VSZ
: 虚拟内存大小。 -
RSS
: 驻留集大小。
同样,如果你想在一段时间内持续监控进程的内存使用情况,可以指定时间间隔和次数:
pidstat -r 2 5
这意味着每隔 2 秒刷新一次内存使用情况,共显示 5 次。
4. 查看 I/O 操作
要监控进程的 I/O 操作,可以使用 -d
选项:
pidstat -d
这将显示以下与 I/O 操作相关的信息:
-
kB_rd/s
: 每秒从磁盘读取的数据量。 -
kB_wr/s
: 每秒写入磁盘的数据量。 -
kB_ccwr/s
: 取消写入的千字节数(由于缓存)。
你也可以指定刷新间隔和次数:
pidstat -d 2 5
这意味着每隔 2 秒刷新一次 I/O 操作数据,共显示 5 次。
5. 查看线程信息
pidstat
还可以监控每个进程的线程使用情况,使用 -t
选项可以显示线程级别的监控信息:
pidstat -t
这会显示每个进程的线程详细信息,包括线程 ID (TID
)、线程 CPU 使用率等。
6. 保存监控数据
如果你希望将监控数据保存到文件中,可以使用重定向符将输出写入文件。例如,将 CPU 使用情况保存到 cpu_usage.txt
中:
pidstat 2 5 > cpu_usage.txt
这样你可以在稍后查看该文件中的数据。
三、结合其他选项
你可以组合使用 pidstat
的多个选项。例如,监控某个特定进程的 CPU、内存和 I/O 使用情况,假设进程 ID 为 1234
,可以使用以下命令:
pidstat -p 1234 -r -d
这将显示进程 1234
的 CPU、内存和 I/O 使用情况。
四、定时任务监控
如果你需要长时间监控进程,可以结合 cron
或 nohup
命令使用。例如,使用 nohup
运行以下命令,使其在后台持续运行,并将输出保存到
nohup pidstat 2 1000 > monitor.log &
这将每隔 2 秒记录一次系统的进程信息,持续 1000 次,并将输出记录到 monitor.log
文件中。你可以通过 tail -f monitor.log