代码
#!/bin/bash
interval=60
while :
do
time=`date +'%H:%M:%S'`
top=$(top -bn2 -d1 | grep leo | tail -n2)
pid1=`echo $top | cut -d" " -f1`
cpu1=`echo $top | cut -d" " -f9`
pid2=`echo $top | cut -d" " -f13`
cpu2=`echo $top | cut -d" " -f21`
echo $time $cpu1 >> ~/$pid1.cpu
echo $time $cpu2 >> ~/$pid2.cpu
sleep $interval
done
注解
top -bn2 -d1
-b 以批处理模式启动top命令。如果不加这个参数,top将以交互模式运行。但是我试验了一下好像并不影响脚本的结果。
-n2 top命令会执行2次。第一次的输出结果不知道为什么总是不准确,所以这里执行2次。如果有知道原因的请不吝赐教,多谢。
-d1 每1秒执行一次。
grep leo
筛选文本中有“leo”的行,leo是我要找的进程名。
tail -n2
因为要查找的进程有2个,所以top会输出4行,这里只取后两行数据。
#第7行到第12行
使用cut命令取出pid和cpu,并保存到文件里。