我正在尝试编写一个脚本来监视某个进程的%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
答案 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
开关