0

我正在尝试编写一个脚本来监视某个进程的 %cpu %mem、cpu 时间等(越多越好)。类似于 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

4

2 回答 2

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如果您只对特定流程感兴趣,请不要使用。

于 2012-09-03T18:35:08.447 回答
0

如果不同 Unices 之间的可移植性是目标,那么您的方法似乎还可以(grep -v虽然不需要),但要小心使用通用ps开关

于 2012-09-03T18:15:01.417 回答