LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 743|回复: 4

请问怎样写script获取程序的“平均”cpu占用率?

[复制链接]
发表于 2004-9-17 21:35:05 | 显示全部楼层 |阅读模式
我想得到命令postgres(我的postgresql数据库程序)运行时的平均cpu占用率,我用下面的top命令:
top -U postgres -b -i -n 3000 -d 1

top每一秒输出一次如下信息:
top - 22:06:38 up 3 min,  2 users,  load average: 0.13, 0.12, 0.05
Tasks:  46 total,   2 running,  44 sleeping,   0 stopped,   0 zombie
Cpu(s): 24.0% us,  6.0% sy,  0.0% ni,  0.0% id, 69.0% wa,  1.0% hi,  0.0% si
Mem:    515324k total,   103796k used,   411528k free,     8512k buffers
Swap:  1052216k total,        0k used,  1052216k free,    56908k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                            
2190 postgres  18   0 78780  21m  72m R 29.9  4.2   0:00.30 postmaster                                                         
2153 postgres  16   0  3328  900 1628 R  1.0  0.2   0:00.01 top                                                               

但我只想拿到cpu占用率的数字(就是29.9),请问用shell script怎样实现?因为上面的top命令会产生3000条记录,我怎样拿到这3000个记录里的cpu占用率并求平均值啊?或者有没有其他简点的top用法可以实现这个功能?谢谢
我很需要这个script,但苦于我是shell菜鸟,请高手一定要帮忙啊。
发表于 2004-9-17 21:47:00 | 显示全部楼层
  1. ...|grep -A1 %CPU|grep -v %CPU|awk '{sum+=$9}END{print sum/3000}'
复制代码
 楼主| 发表于 2004-9-20 22:45:45 | 显示全部楼层
非常感谢KornLee!
但还是想再麻烦你。如果我只要求这些记录里的cpu占用率大于0的值的平均值(忽略等于0的值)。该怎么做呢?我想了很久都没想到怎么写:thank
发表于 2004-9-20 23:05:29 | 显示全部楼层
加上一个判断吧
...|awk '$9>0{sum+=$9}END{print sum/3000}'
 楼主| 发表于 2004-9-21 07:14:53 | 显示全部楼层
thx very much!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表