1、pidstat命令简介
pidstat命令用来监控被Linux内核管理的独立任务(进程)。它输出每个受内核管理的任务的相关信息。pidstat命令也可以用来监控特定进程的子进程。
1.1 如何安装pidstat
pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。
在Debian/Ubuntu系统中可以使用下面的命令来安装
# apt-get install sysstat
CentOS/Fedora/RHEL版本的linux中则使用下面的命令:
# yum install sysstat
2、pidstat
[root@Beta-nginx test1]# pidstat
Linux 2.6.32-431.el6.x86_64 (Beta-nginx) 2018年04月28日 _x86_64_ (4 CPU)
16时50分49秒 PID %usr %system %guest %CPU CPU Command
16时50分49秒 1 0.00 0.00 0.00 0.00 1 init
16时50分49秒 3 0.00 0.00 0.00 0.00 0 migration/0
16时50分49秒 4 0.00 0.00 0.00 0.00 0 ksoftirqd/0
16时50分49秒 6 0.00 0.00 0.00 0.00 0 watchdog/0
16时50分49秒 7 0.00 0.00 0.00 0.00 1 migration/1
16时50分49秒 9 0.00 0.00 0.00 0.00 1 ksoftirqd/1
16时50分49秒 10 0.00 0.00 0.00 0.00 1 watchdog/1
在结果中你能看到如下内容:
- PID - 被监控的任务的进程号
- %usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
- %system - 这个任务在系统层使用时的cpu使用率。
- %guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。
- %CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。
- CPU - 正在运行这个任务的处理器编号。
- Command - 这个任务的命令名称。
3、用-help命令看看其用法
[root@Beta-nginx test1]# pidstat -help
用法: pidstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -C <命令> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
[ -p { <进程号> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
4、I/O统计数据
通过使用-d参数来得到I/O的统计数据。使用-p指定进程号,比如
[root@dev-nginx /]# pidstat -d -p 31745
Linux 2.6.32-431.el6.x86_64 (dev-nginx) 2018年04月28日 _x86_64_ (4 CPU)
17时00分27秒 PID kB_rd/s kB_wr/s kB_ccwr/s Command
17时00分27秒 31745 1.34 44.58 0.01 mysqld
IO 输出会显示一些内的条目:
- kB_rd/s - 任务从硬盘上的读取速度(kb)
- kB_wr/s - 任务向硬盘中的写入速度(kb)
5、查看CPU和内存数据
[root@dev-nginx /]# pidstat -u -p 31745
Linux 2.6.32-431.el6.x86_64 (dev-nginx) 2018年04月28日 _x86_64_ (4 CPU)
17时09分48秒 PID %usr %system %guest %CPU CPU Command
17时09分48秒 31745 0.08 0.04 0.00 0.11 1 mysqld
[root@dev-nginx /]# pidstat -r -p 31745
Linux 2.6.32-431.el6.x86_64 (dev-nginx) 2018年04月28日 _x86_64_ (4 CPU)
17时10分01秒 PID minflt/s majflt/s VSZ RSS %MEM Command
17时10分01秒 31745 0.19 0.01 2893636 289984 1.78 mysqld