Answers:
这个标准ps
就足够了。
while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done
结果:
0.0 3352
0.3 31640
0.4 36924
0.5 36052
...
第一个字段是以百分比为单位的CPU使用率,第二个字段是以千字节为单位的物理内存使用率。
如果您关心精确的计时并希望以百分比表示CPU:
watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'
sar
。一些版本使用sar -x PID
其他使用pidstat -p PID
。
您正在尝试观察特定进程需要多少cpu时间。
我打算建议CentOS的CPU统计工具? 但这不仅适用于整个过程,而且适用于整个系统。
任何一个进程都会在ps的输出中显示CPU时间:
$ ps -ef | egrep blah
root 13988 11152 0 Dec16 ? 00:00:05 sshd: xxx [priv]
xxx 14024 13988 0 Dec16 ? 00:06:00 sshd: xxx@pts/0
xxx 14032 14024 0 Dec16 pts/0 07:00:00 -bash
root 1194 679 0 Apr24 ? 2-05:15:14 [kswapd0]
root 1195 679 0 Apr24 ? 2-06:35:49 [kswapd1]
至此,用Python解析输出,对它进行一些日期数学运算,您就很高兴了。
以下命令获取特定进程每40秒平均CPU和内存使用率(pid)
pidstat 40 -ru -p <pid>
我的情况的输出(前两行用于CPU使用,后两行用于内存):
02:15:07 PM PID %usr %system %guest %CPU CPU Command
02:15:47 PM 24563 0.65 0.07 0.00 0.73 3 java
02:15:07 PM PID minflt/s majflt/s VSZ RSS %MEM Command
02:15:47 PM 24563 6.95 0.00 13047972 2123268 6.52 java