我自己的一个进程的unix性能监视器

时间:2012-09-03 17:51:01

标签: performance bash shell

我正在尝试编写一个脚本来监视某个进程的%cpu%mem,cpu time等(越多越好)。像Windows上的性能监视器(perfmon) 我知道已经有一些工具已经完成,但我必须使用基本和内置函数来完成它,因为它必须在linux和(solaris * / aix / hpux)上工作。
输出类似于perfmon.exe的输出会很棒,这样我就可以更新输出日志,让每5秒跟踪进程的格式为:

date %mem %cpu cputime private_bytes(?) virtual_bytes(?)        

我不知道是从顶部提取数据(实际上在将要使用的所有操作系统上都不一样)或尝试从'ps'查询中提取数据。

我尝试通过一些for循环来这样做:

for $count; do   
    sleep $delay  
    date >>output.txt  
    ps -A -o pid,%cpu,%mem,time -o comm= | grep -v grep | grep $process >> output.txt  
done  

我很感激任何提示。

BR

2 个答案:

答案 0 :(得分:2)

尝试类似

的内容
ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -C NAME

ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -p PID

如果您只对特定流程感兴趣,请不要使用-A

答案 1 :(得分:0)

如果目标是不同Unices之间的可移植性,那么您的方法似乎没问题(尽管不需要grep -v),但要小心使用常见的ps开关