ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。 **命令格式:** ``` pidstat [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ username ] ] [ -u ] [ -V ] [ -w ] [ -C comm ] [ -p { pid [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ] [ interval [ count ] ] ``` > option: > * -C:仅显示命令名包含字符串comm的任务。此字符串可以是正则表达式 > * -u:默认的参数,显示各个进程的cpu使用统计 > * -r:显示各个进程的内存使用统计 > * -d:显示各个进程的IO使用情况 > * -p:指定进程号 > * -s:显示堆栈利用率 > * -w:显示每个进程的上下文切换情况 > * -t:显示选择任务的线程的统计信息外的额外信息 > * -T { TASK | CHILD | ALL }         这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。         注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。 > * -V:版本号 > * -h:在一行上显示了所有活动,这样其他程序可以容易解析。 > * -I:在SMP环境,表示任务的CPU使用率/内核数量 > * -l:显示命令名和所有参数 **pidstat各字段含义:** ``` [root@izwz91quxhnlkan8kjak5hz ~]# pidstat Linux 3.10.0-957.27.2.el7.x86_64 (izwz91quxhnlkan8kjak5hz) 2021年05月20日 _x86_64_ (1 CPU) 19时35分14秒 UID PID %usr %system %guest %CPU CPU Command 19时35分14秒 0 1 0.00 0.00 0.00 0.01 0 systemd 19时35分14秒 0 2 0.00 0.00 0.00 0.00 0 kthreadd 19时35分14秒 0 3 0.00 0.01 0.00 0.01 0 ksoftirqd/0 ``` * PID:进程ID * %usr:进程在用户空间占用cpu的百分比 * %system:进程在内核空间占用cpu的百分比 * %guest:进程在虚拟机占用cpu的百分比 * %CPU:进程占用cpu的百分比 * CPU:处理进程的cpu编号 * Command:当前进程对应的命令 **pidstat -r (内存使用情况统计)各字段含义:** ``` [root@izwz91quxhnlkan8kjak5hz ~]# pidstat -r Linux 3.10.0-957.27.2.el7.x86_64 (izwz91quxhnlkan8kjak5hz) 2021年05月20日 _x86_64_ (1 CPU) 19时42分36秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command 19时42分36秒 0 1 0.17 0.00 51856 3212 0.17 systemd 19时42分36秒 0 328 0.91 0.00 149872 60068 3.19 systemd-journal ``` * PID:进程标识符 * Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页 * Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页 * VSZ:虚拟地址大小,虚拟内存的使用KB * RSS:常驻集合大小,非交换区五里内存使用KB * Command:task命令名 **pidstat -d( 显示各个进程的IO使用情况)各字段含义:** ``` [root@izwz91quxhnlkan8kjak5hz ~]# pidstat -d Linux 3.10.0-957.27.2.el7.x86_64 (izwz91quxhnlkan8kjak5hz) 2021年05月20日 _x86_64_ (1 CPU) 19时47分17秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 19时47分17秒 0 1 1.93 1.44 0.05 systemd 19时47分17秒 0 30 0.00 0.00 0.00 kswapd0 ``` **pidstat -s(显示各个进程的堆栈利用率)各字段含义:** * UID:正在监视的任务的实际用户标识号 * USER:拥有被监视任务的真实用户的名称 * PID:进程标识符 * StkSize:作为堆栈为任务保留但不一定使用的内存量(KB)。 * StkRef:任务引用的用作堆栈的内存量(KB)。 * Command:task命令名 **pidstat -w(显示每个进程的上下文切换情况)各字段含义:** ``` [root@izwz91quxhnlkan8kjak5hz ~]# pidstat -w Linux 3.10.0-957.27.2.el7.x86_64 (izwz91quxhnlkan8kjak5hz) 2021年05月20日 _x86_64_ (1 CPU) 19时54分33秒 UID PID cswch/s nvcswch/s Command 19时54分33秒 0 1 0.38 0.00 systemd 19时54分33秒 0 2 0.00 0.00 kthreadd 19时54分33秒 0 3 2.62 0.00 ksoftirqd/0 ``` * PID:进程id * UID:正在监视的任务的实际用户标识号 * USER:拥有被监视任务的真实用户的名称 * Cswch/s:每秒执行任务的自愿性上下文切换的总数。当任务因需要不可用的资源而阻塞时,会发生自愿上下文切换。 * Nvcswch/s:每秒执行任务的非自愿上下文切换的总数。当任务在其时间片期间执行,然后被迫放弃处理器时,会发生非自愿上下文切换 * Command:命令名 **应用实例:** ``` # 每隔两秒显示系统中每个进程的五个CPU统计报告 pidstat 2 5 # 以两秒钟的间隔显示五个关于PID 1643内存统计信息的报告 pidstat -r -p 1643 2 5 # 显示命令名称包含字符串“ fox”或“ bird”的所有进程的内存统计信息。 pidstat -C "fox|bird" -r -p ALL # 对于系统中所有任务的子进程,每隔两秒显示五个页面错误统计信息报告。 仅显示具有非零统计值的子进程 pidstat -T CHILD -r 2 5 ```