A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
systat
的组件之一。用于监控全部或指定进程的 CPU、内存、线程、设备 IO 等系统资源的占用情况。pidstat 首次运行时显示自系统启动开始的各项统计信息,之后运行 pidstat 将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
-bash: pidstat: command not found Windows (WSL2) sudo apt-get update sudo apt-get install sysstat #Debian apt-get install sysstat #Ubuntu apt-get install sysstat #Alpine apk add sysstat #Arch Linux pacman -S sysstat #Kali Linux apt-get install sysstat #CentOS yum install sysstat #Fedora dnf install sysstat #OS X brew install sysstat #Raspbian apt-get install sysstat #Dockerfile dockerfile.run/pidstat #Docker docker run cmd.cat/pidstat pidstat
pidstat 是 sysstat
软件套件的一部分,sysstat
包含很多监控 Linux 系统状态的工具,它能够从大多数 Linux 发行版的软件源中获得。
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
-u:默认的参数,显示各个进程的cpu使用统计 -r:显示各个进程的内存使用统计 -d:显示各个进程的IO使用情况 -p:指定进程号 -w:显示每个进程的上下文切换情况 -t:显示选择任务的线程的统计信息外的额外信息 -T { TASK | CHILD | ALL } 这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。 注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。 -V:版本号 -h:在一行上显示了所有活动,这样其他程序可以容易解析。 -I:在SMP环境,表示任务的CPU使用率/内核数量 -l:显示命令名和所有参数 -C <command> 查看对应command进程的状态 [ <interval> [ <count> ] interval 显示间隔,单位s count 显示次数,默认一直显示。
查看所有进程的 CPU 使用情况( -u -p ALL):
pidstat pidstat -u -p ALL #pidstat 和 pidstat -u -p ALL 是等效的。 #pidstat 默认显示了所有进程的cpu使用率。 详细说明 PID:进程ID %usr:进程在用户空间占用cpu的百分比 %system:进程在内核空间占用cpu的百分比 %guest:进程在虚拟机占用cpu的百分比 %CPU:进程占用cpu的百分比 CPU:处理进程的cpu编号 Command:当前进程对应的命令
使用 -u
选项,pidstat 将显示各活动进程的 cpu 使用统计,执行”pidstat -u”与单独执行”pidstat”的效果一样:
pidstat -u
内存使用情况统计 -r,使用 -r
选项,pidstat 将显示各活动进程的内存使用统计:
[root@TestMaster ~] $ pidstat -r Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster) 05/05/2019 _x86_64_ (4 CPU) 10:17:42 AM UID PID minflt/s majflt/s VSZ RSS %MEM Command 10:17:42 AM 0 1 1.49 0.00 51612 3408 0.04 systemd 10:17:42 AM 0 360 1.37 0.00 39464 5640 0.07 systemd-journal 10:17:42 AM 0 385 0.00 0.00 44036 1728 0.02 systemd-udevd 10:17:42 AM 0 474 0.00 0.00 62044 1264 0.02 auditd 10:17:42 AM 998 494 0.00 0.00 538436 10724 0.13 polkitd 10:17:42 AM 0 497 1.50 0.00 21656 1104 0.01 irqbalance 10:17:42 AM 81 500 0.13 0.00 58352 2320 0.03 dbus-daemon 10:17:42 AM 28 501 0.05 0.00 795288 2028 0.03 nscd 10:17:42 AM 38 502 0.00 0.00 25932 1888 0.02 ntpd 10:17:42 AM 0 515 0.82 0.00 26584 1856 0.02 systemd-logind 10:17:42 AM 0 519 0.75 0.00 126316 1700 0.02 crond 10:17:42 AM 0 533 0.00 0.00 25904 956 0.01 atd 10:17:42 AM 0 552 0.00 0.00 4384 516 0.01 acpid 10:17:42 AM 0 698 0.00 0.00 107308 2712 0.03 dhclient 10:17:42 AM 0 750 0.00 0.00 112936 4344 0.05 sshd 10:17:42 AM 0 759 0.07 0.00 615708 7080 0.09 rsyslogd 10:17:42 AM 0 760 0.00 0.00 573732 16456 0.21 tuned 10:17:42 AM 0 804 0.00 0.00 445200 24152 0.30 memcached 10:17:42 AM 0 831 0.00 0.00 115436 1720 0.02 mysqld_safe 10:17:42 AM 0 980 4.92 0.00 20344 12004 0.15 JCSAgentCore 10:17:42 AM 0 1081 0.00 0.00 58272 4200 0.05 nginx 10:17:42 AM 0 1225 0.01 0.00 142012 2184 0.03 redis-server 10:17:42 AM 0 1298 0.00 0.00 110092 824 0.01 agetty 10:17:42 AM 1002 1324 0.03 0.00 2636652 515564 6.44 mysqld 10:17:42 AM 0 1689 0.00 0.00 245872 7096 0.09 php-fpm 10:17:42 AM 0 2408 1.65 0.00 168800 2236 0.03 AgentMonitor 10:17:42 AM 0 3282 10.82 0.00 775876 127856 1.60 jcloudhids 10:17:42 AM 0 3389 0.00 0.00 95052 1192 0.01 jcloudhidsupdat 10:17:42 AM 0 3610 0.00 0.00 215988 8796 0.11 python 10:17:42 AM 0 3632 0.00 0.00 12692 708 0.01 jdog-watchdog 10:17:42 AM 0 3944 0.01 0.00 289692 15184 0.19 jdog-monitor.1. 10:17:42 AM 1001 7516 0.01 0.00 338284 17788 0.22 php-fpm 10:17:42 AM 1001 7525 0.01 0.00 339232 18732 0.23 php-fpm 10:17:42 AM 1001 8567 0.00 0.00 79992 27340 0.34 nginx 10:17:42 AM 1001 8568 0.00 0.00 79776 26988 0.34 nginx 10:17:42 AM 1001 8569 0.00 0.00 80000 27360 0.34 nginx 10:17:42 AM 1001 8570 0.00 0.00 80096 27636 0.35 nginx 10:17:42 AM 1001 8571 0.00 0.00 80432 27916 0.35 nginx 10:17:42 AM 1001 8572 0.00 0.00 80604 28032 0.35 nginx 10:17:42 AM 1001 8573 0.00 0.00 79756 26984 0.34 nginx 10:17:42 AM 1001 8574 0.00 0.00 80128 27592 0.34 nginx 10:17:42 AM 1001 8918 0.01 0.00 338968 18348 0.23 php-fpm 10:17:42 AM 1001 8933 0.01 0.00 338516 17944 0.22 php-fpm 10:17:42 AM 1001 9310 0.01 0.00 338132 17640 0.22 php-fpm 10:17:42 AM 0 10100 0.01 0.00 17896 6552 0.08 UpgradePlugin 10:17:42 AM 0 10106 0.01 0.00 443844 9800 0.12 MonitorPlugin 10:17:42 AM 1001 11255 0.01 0.00 338804 18216 0.23 php-fpm 10:17:42 AM 1001 11961 0.01 0.00 338300 17724 0.22 php-fpm 10:17:42 AM 1001 12199 0.01 0.00 337732 17248 0.22 php-fpm 10:17:42 AM 1001 13799 0.01 0.00 339536 19004 0.24 php-fpm 10:17:42 AM 1001 15699 0.01 0.00 338260 17784 0.22 php-fpm 10:17:42 AM 0 19594 0.00 0.00 152664 5396 0.07 sshd 10:17:42 AM 0 19597 0.00 0.00 115568 2132 0.03 bash 10:17:42 AM 1001 25725 0.01 0.00 338160 17568 0.22 php-fpm 10:17:42 AM 0 26827 0.00 0.00 108364 1056 0.01 pidstat -------------- PID:进程标识符 Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页 Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页 VSZ:虚拟地址大小,虚拟内存的使用KB RSS:常驻集合大小,非交换区五里内存使用KB Command:task命令名
显示各个进程的 IO 使用情况 -d:
[root@TestMaster ~] $ pidstat -d -p 519 Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster) 05/05/2019 _x86_64_ (4 CPU) 10:19:54 AM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command 10:19:54 AM 0 519 8.07 25.00 0.00 crond ---------- 报告IO统计显示以下信息: PID:进程id kB_rd/s:每秒从磁盘读取的KB kB_wr/s:每秒写入磁盘KB kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。 COMMAND:task的命令名
显示每个进程的上下文切换情况 -w
[root@TestMaster ~] $ pidstat -w -p 8567 Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster) 05/05/2019 _x86_64_ (4 CPU) 10:21:29 AM UID PID cswch/s nvcswch/s Command 10:21:29 AM 1001 8567 0.43 0.00 nginx ------------ PID:进程id Cswch/s:每秒主动任务上下文切换数量 Nvcswch/s:每秒被动任务上下文切换数量 Command:命令名
显示选择任务的线程的统计信息外的额外信息 -t
[root@TestMaster ~] $ pidstat -t -p 8567 Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster) 05/05/2019 _x86_64_ (4 CPU) 10:23:26 AM UID TGID TID %usr %system %guest %CPU CPU Command 10:23:26 AM 1001 8567 - 0.00 0.00 0.00 0.00 0 nginx 10:23:26 AM 1001 - 8567 0.00 0.00 0.00 0.00 0 |__nginx --------------- TGID:主线程的表示 TID:线程id %usr:进程在用户空间占用cpu的百分比 %system:进程在内核空间占用cpu的百分比 %guest:进程在虚拟机占用cpu的百分比 %CPU:进程占用cpu的百分比 CPU:处理进程的cpu编号 Command:当前进程对应的命令
pidstat -T
,注意:task 和子线程的全局的统计信息和 pidstat 选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程 kill 或者完成的时候才会被收集。
pidstat -T TASK #TASK表示报告独立的task。 pidstat -T CHILD #CHILD关键字表示报告进程下所有线程统计信息。 pidstat -T ALL #ALL表示报告独立的task和task下面的所有线程。
[root@TestMaster ~] $ pidstat -T ALL -p 8567 Linux 3.10.0-957.10.1.el7.x86_64 (TestMaster) 05/05/2019 _x86_64_ (4 CPU) 10:24:33 AM UID PID %usr %system %guest %CPU CPU Command 10:24:33 AM 1001 8567 0.00 0.00 0.00 0.00 0 nginx 10:24:33 AM UID PID usr-ms system-ms guest-ms Command 10:24:33 AM 1001 8567 41050 49590 0 nginx --------------- PID:进程id Usr-ms:任务和子线程在用户级别使用的毫秒数。 System-ms:任务和子线程在系统级别使用的毫秒数。 Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。 Command:命令名