📜  使用 pidstat 工具监视和查找 Linux 进程的统计信息(1)

📅  最后修改于: 2023-12-03 15:06:49.741000             🧑  作者: Mango

使用 pidstat 工具监视和查找 Linux 进程的统计信息

简介

在 Linux 系统中,我们经常需要监视特定进程的 CPU 使用情况、内存使用情况、I/O 使用情况以及上下文切换等信息。此时,pidstat 工具便可以派上用场。pidstat 工具可以让我们实时监视一个进程的各项统计信息,可以对进程的 CPU 时间、内存占用、磁盘 I/O 操作等进行监视和分析,在进程发生异常或出现问题时,提供快速的排查途径。

安装

在绝大多数 Linux 系统中,pidstat 工具都是默认安装的,如果你发现没有该工具,可以使用以下命令进行安装:

  • CentOS/RHEL:
yum install sysstat
  • Ubuntu/Debian:
apt-get install sysstat
语法
pidstat [ options ] [ interval [ count ] ] [ -p { pid [,...] | ALL } ]

其中,options 可选参数包括:

  • -u 显示 CPU 使用率的详细信息
  • -r 显示内存使用率的详细信息
  • -d 显示磁盘 I/O 详细信息
  • -t 显示进程的上下文切换次数和锁定时间
  • -w 显示 I/O 活动的详细信息
  • -h 打印帮助信息

interval 表示监视数据更新的时间间隔,单位为秒,默认情况下为 1 秒。

count 表示监视的次数,默认情况下是无限次,可以通过 count 指定监视次数。

-p 参数可指定要监视的进程 ID,多个进程 ID 之间用逗号分隔,或者使用 ALL 监视所有进程。

使用示例

查看进程 CPU 使用率

pidstat -u 1

该命令表示每隔 1 秒钟,显示进程的 CPU 使用率信息。输出结果如下:

Linux 4.15.0-29-generic (hostname) 	08/01/2021 	_x86_64_	(4 CPU)

12:17:38 PM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
12:17:39 PM  1000     1935    0.00    0.00    0.00    0.00    0.00     3  sar
12:17:40 PM  1000     1935    0.00    0.00    0.00    0.00    0.00     3  sar
12:17:41 PM  1000     1935    0.00    0.00    0.00    0.00    0.00     2  sar
12:17:42 PM  1000     1935    0.00    0.00    0.00    0.00    0.00     0  sar

其中,%usr 列表示进程所使用的用户 CPU 时间占全部 CPU 时间的百分比,%system 列表示内核态时间占据全部 CPU 时间的百分比。

查看进程内存使用情况

pidstat -r 1

该命令表示每隔 1 秒钟,显示进程的内存使用情况。输出结果如下:

Linux 4.15.0-29-generic (hostname) 	08/01/2021 	_x86_64_	(4 CPU)

12:17:38 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
12:17:39 PM  1000     1935      0.00      0.00  273620   2436   0.01  sar
12:17:40 PM  1000     1935      0.00      0.00  273620   2436   0.01  sar
12:17:41 PM  1000     1935      0.00      0.00  273620   2436   0.01  sar
12:17:42 PM  1000     1935      0.00      0.00  273620   2436   0.01  sar

其中,VSZ 列表示进程虚拟内存的大小,RSS 列表示进程的实际物理内存大小,%MEM 列表示进程所占用物理内存的百分比。

查看进程磁盘 I/O 情况

pidstat -d 1

该命令表示每隔 1 秒钟,显示进程的磁盘 I/O 情况。输出结果如下:

Linux 4.15.0-29-generic (hostname) 	08/01/2021 	_x86_64_	(4 CPU)

12:17:38 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
12:17:39 PM      1935      0.00      0.00      0.00  sar
12:17:40 PM      1935      0.00      0.00      0.00  sar
12:17:41 PM      1935      0.00      0.00      0.00  sar
12:17:42 PM      1935      0.00      0.00      0.00  sar

其中,kB_rd/s 列表示每秒钟进程从磁盘读取的数据大小,kB_wr/s 列表示每秒钟进程向磁盘写入的数据大小,kB_ccwr/s 列表示每秒钟被取消写入到磁盘的数据大小。

总结

通过使用 pidstat 工具,我们可以非常方便地监视和查找进程的各项统计信息,以便更好地了解进程的运行状况,快速排查进程出现的问题。