Linux常用命令-pidstat

命令

pidstat

描述

Report statistics for Linux tasks
显示系统进程统计信息

用法

1
pidstat [ options ] [ <interval> [ <count> ] ]

选项

1
2
3
4
5
6
7
8
9
Options:
-C CMD 指定命令名称,支持正则
-d 显示系统IO
-l 显示完整的命令行
-p { pid [,...] | ALL } 指定pid,ALL表示显示所有
-r 显示页面错误和内存使用情况
-s 显示堆栈信息
-t 显示线程信息
-U 显示用户名而非UID

注意

pidstat命令可以显示指定进程统计信息
pldd命令可以显示指定进程PID的共享库
pmap命令可以显示指定进程PID的内存映射
prtstat命令可以显示进程详细信息

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# -C指定sshd进程
$ pidstat -C sshd
Linux 3.10.0-1160.11.1.el7.x86_64 (centos7) 03/12/2021 _x86_64_ (2 CPU)
07:53:54 PM UID PID %usr %system %guest %CPU CPU Command
07:53:54 PM 0 10649 0.00 0.00 0.00 0.00 1 sshd
07:53:54 PM 0 10726 0.00 0.00 0.00 0.00 1 sshd
# -d显示系统IO
$ pidstat -d -C sshd
07:55:18 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
07:55:18 PM 0 10578 0.00 0.00 0.00 sshd
# -p指定pid
$ pidstat -p 10649
08:05:06 PM UID PID %usr %system %guest %CPU CPU Command
08:05:06 PM 0 10726 0.00 0.00 0.00 0.00 1 sshd
# -r显示内存使用信息
$ pidstat -r -C sshd
08:05:51 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:05:51 PM 0 10578 0.06 0.00 112936 4296 0.21 sshd
08:05:51 PM 0 10649 0.08 0.00 157512 5924 0.29 sshd
08:05:51 PM 0 10726 0.08 0.00 157512 5924 0.29 sshd
# 指定进程pid,间隔2s显示5次
$ pidstat -r -p 10726 2 5
08:15:22 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:15:24 PM 0 10726 0.00 0.00 157512 5924 0.29 sshd
08:15:26 PM 0 10726 0.00 0.00 157512 5924 0.29 sshd
08:15:28 PM 0 10726 0.00 0.00 157512 5924 0.29 sshd
08:15:30 PM 0 10726 0.00 0.00 157512 5924 0.29 sshd
08:15:32 PM 0 10726 0.00 0.00 157512 5924 0.29 sshd
Average: 0 10726 0.00 0.00 157512 5924 0.29 sshd
# -s显示堆栈信息
$ pidstat -s -C sshd
08:06:26 PM UID PID StkSize StkRef Command
08:06:26 PM 0 10578 132 20 sshd
08:06:26 PM 0 10649 132 36 sshd
08:06:26 PM 0 10726 132 36 sshd
# -t显示线程信息
$ pidstat -t -C sshd
08:09:13 PM UID TGID TID %usr %system %guest %CPU CPU Command
08:09:13 PM 0 10649 - 0.00 0.00 0.00 0.00 1 sshd
08:09:13 PM 0 - 10649 0.00 0.00 0.00 0.00 1 |__sshd
08:09:13 PM 0 10726 - 0.00 0.00 0.00 0.00 1 sshd
08:09:13 PM 0 - 10726 0.00 0.00 0.00 0.00 1 |__sshd
# -U显示用户名,USER字段默认显示为UID
$ pidstat -U -C sshd
08:11:33 PM USER PID %usr %system %guest %CPU CPU Command
08:11:33 PM root 10649 0.00 0.00 0.00 0.00 1 sshd
08:11:33 PM root 10726 0.00 0.00 0.00 0.00 0 sshd
# 显示sshd和chronyd进程信息
$ pidstat -r -p ALL -C "sshd|chronyd"
08:16:00 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
08:16:00 PM 998 10531 0.01 0.00 100496 1396 0.07 chronyd
08:16:00 PM 0 10578 0.05 0.00 112936 4296 0.21 sshd
08:16:00 PM 0 10649 0.07 0.00 157512 5924 0.29 sshd
08:16:00 PM 0 10726 0.07 0.00 157512 5924 0.29 sshd

# pldd命令可以显示指定进程PID的共享库
$ pldd 10531
10531: /usr/sbin/chronyd
linux-vdso.so.1
/lib64/libm.so.6
/lib64/libfreebl3.so
/lib64/libcap.so.2
/lib64/libseccomp.so.2
/lib64/libpthread.so.0
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2
/lib64/libdl.so.2
/lib64/libattr.so.1
/lib64/libnss_files.so.2
/lib64/libnss_dns.so.2
/lib64/libresolv.so.2
# 参考ldd命令显示结果
$ ldd /usr/sbin/chronyd
linux-vdso.so.1 => (0x00007ffc48197000)
libm.so.6 => /lib64/libm.so.6 (0x00007f969dbab000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f969d9a8000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f969d7a3000)
libseccomp.so.2 => /lib64/libseccomp.so.2 (0x00007f969d562000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f969d346000)
libc.so.6 => /lib64/libc.so.6 (0x00007f969cf78000)
/lib64/ld-linux-x86-64.so.2 (0x00007f969e0ee000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f969cd74000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f969cb6f000)

# pmap命令可以查看指定进程PID的内存映射
$ pmap 10531
10531: /usr/sbin/chronyd
000055c7536a1000 248K r-x-- chronyd
000055c7538df000 4K r---- chronyd
000055c7538e0000 4K rw--- chronyd
000055c7538e1000 4K rw--- [ anon ]
000055c753db0000 132K rw--- [ anon ]
00007ff7cc000000 132K rw--- [ anon ]
00007ff7cc021000 65404K ----- [ anon ]
00007ff7d2942000 88K r-x-- libresolv-2.17.so
00007ff7d2958000 2048K ----- libresolv-2.17.so
00007ff7d2b58000 4K r---- libresolv-2.17.so
00007ff7d2b59000 4K rw--- libresolv-2.17.so
# -d显示设备格式
$ pmap -d 10531|head
10531: /usr/sbin/chronyd
Address Kbytes Mode Offset Device Mapping
000055c7536a1000 248 r-x-- 0000000000000000 0fd:00000 chronyd
000055c7538df000 4 r---- 000000000003e000 0fd:00000 chronyd
000055c7538e0000 4 rw--- 000000000003f000 0fd:00000 chronyd
000055c7538e1000 4 rw--- 0000000000000000 000:00000 [ anon ]
000055c753db0000 132 rw--- 0000000000000000 000:00000 [ anon ]
00007ff7cc000000 132 rw--- 0000000000000000 000:00000 [ anon ]
00007ff7cc021000 65404 ----- 0000000000000000 000:00000 [ anon ]
00007ff7d2942000 88 r-x-- 0000000000000000 0fd:00000 libresolv-2.17.so
# -x显示扩展格式
$ pmap -x 10531|head
10531: /usr/sbin/chronyd
Address Kbytes RSS Dirty Mode Mapping
000055c7536a1000 248 200 0 r-x-- chronyd
000055c7538df000 4 4 4 r---- chronyd
000055c7538e0000 4 4 4 rw--- chronyd
000055c7538e1000 4 4 4 rw--- [ anon ]
000055c753db0000 132 36 36 rw--- [ anon ]
00007ff7cc000000 132 12 12 rw--- [ anon ]
00007ff7cc021000 65404 0 0 ----- [ anon ]
00007ff7d2942000 88 56 0 r-x-- libresolv-2.17.so

# prtstat命令可以显示进程信息
$ prtstat 10531
Process: chronyd State: S (sleeping)
CPU#: 1 TTY: 0:0 Threads: 1
Process, Group and Session IDs
Process ID: 10531 Parent ID: 1
Group ID: 10530 Session ID: 10530
T Group ID: -1
Page Faults
This Process (minor major): 359 0
Child Processes (minor major): 0 0
CPU Times
This Process (user system guest blkio): 0.00 0.01 0.00 0.00
Child processes (user system guest): 0.00 0.00 0.00
Memory
Vsize: 102 MB
RSS: 1429 kB RSS Limit: 18446744073709 MB
Code Start: 0x55c7536a1000 Code Stop: 0x55c7536de9fc
Stack Start: 0x7fff1a1e1160
Stack Pointer (ESP): 0x7fff1a1e0d10 Inst Pointer (EIP): 0x7ff7d3c759a3
Scheduling
Policy: normal
Nice: 0 RT Priority: 0 (non RT)
# -r显示原始格式
$ prtstat -r 10531
pid: 10531 comm: chronyd
state: S ppid: 1
pgrp: 10530 session: 10530
tty_nr: 0 tpgid: -1
flags: 40402140 minflt: 359
cminflt: 0 majflt: 0
cmajflt: 0 utime: 0
stime: 1 cutime: 0
cstime: 0 priority: 20
nice: 0 num_threads: 1
itrealvalue: 0 starttime: 2305400
vsize: 102907904 rss: 349
rsslim: 18446744073709551615 startcode: 94314586312704
endcode: 94314586565116 startstack: 140733631566176
kstkesp: 7FFF1A1E0D10 kstkeip: 7FF7D3C759A3
wchan: 18446744071682015509 nswap: 0
cnswap: 18446744071682015509 exit_signal: 17
processor: 1 rt_priority: 0
policy: 0 delayaccr_blkio_ticks: 0
guest_time: 0 cguest_time: 0