📅  最后修改于: 2023-12-03 15:06:49.741000             🧑  作者: Mango
在 Linux 系统中,我们经常需要监视特定进程的 CPU 使用情况、内存使用情况、I/O 使用情况以及上下文切换等信息。此时,pidstat 工具便可以派上用场。pidstat 工具可以让我们实时监视一个进程的各项统计信息,可以对进程的 CPU 时间、内存占用、磁盘 I/O 操作等进行监视和分析,在进程发生异常或出现问题时,提供快速的排查途径。
在绝大多数 Linux 系统中,pidstat 工具都是默认安装的,如果你发现没有该工具,可以使用以下命令进行安装:
yum install sysstat
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
监视所有进程。
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
列表示进程所占用物理内存的百分比。
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 工具,我们可以非常方便地监视和查找进程的各项统计信息,以便更好地了解进程的运行状况,快速排查进程出现的问题。