Chinaunix

标题: top的脚本编写问题 [打印本页]

作者: Aiho    时间: 2009-03-13 15:30
标题: top的脚本编写问题
各位大侠,请问如何平均每5分钟执行一次top,然后获取CPU,MEM,的负载情况。包括使用多少,
空闲多少。请问这个脚本该如何编写。
作者: 飞鸿无痕    时间: 2009-03-13 15:37
原帖由 Aiho 于 2009-3-13 15:30 发表
各位大侠,请问如何平均每5分钟执行一次top,然后获取CPU,MEM,的负载情况。包括使用多少,
空闲多少。请问这个脚本该如何编写。


你这样吧,写个脚本用top去获得cpu,mem的值,然后放到cron里,每5分钟执行一次就可以了!!!

给你来个最简单的:
  1. #!/bin/bash
  2. echo "time is " `date  +%Y%m%d-%T` >>aa.log
  3. top -b -n 1 | grep "Cpu\|Mem\|Swap" >>aa.log
复制代码
得出的结果是:
[root@zhang shell]# cat aa.log
time is  20090309-04:17:36
Cpu(s):  0.1% us,  0.8% sy,  0.0% ni, 98.9% id,  0.1% wa,  0.1% hi,  0.0% si
Mem:    125988k total,   121016k used,     4972k free,     9264k buffers
Swap:   305224k total,   109744k used,   195480k free,    39520k cached
不知道是不是你要的,把它添加到cron任务里,设置成每5分钟执行一次就可以了!!!

[ 本帖最后由 飞鸿无痕 于 2009-3-13 16:25 编辑 ]
作者: xuxingyu    时间: 2009-03-13 15:40
man watch
作者: 飞鸿无痕    时间: 2009-03-13 15:40
原帖由 Aiho 于 2009-3-13 15:30 发表
各位大侠,请问如何平均每5分钟执行一次top,然后获取CPU,MEM,的负载情况。包括使用多少,
空闲多少。请问这个脚本该如何编写。

是要获取这样的数字??还是别的???写出个范例的数据样本,才好根据你的要求来写脚本去获取数据!
[root@zhang shell]# top | grep "Mem"
Mem:    125988k total,   119988k used,     6000k free,    17584k buffers
作者: nhw_cs    时间: 2009-03-13 15:41
top.sh:

while [ : ]
do

top|head -5

sleep 300

done


nohup ./top.sh &

[ 本帖最后由 nhw_cs 于 2009-3-13 15:44 编辑 ]
作者: ziggler    时间: 2009-03-13 15:45
原帖由 飞鸿无痕 于 2009-3-13 15:37 发表


你这样吧,写个脚本用top去获得cpu,mem的值,然后放到cron里,每5分钟执行一次就可以了!!!

这个办法可行。
作者: shaneqi    时间: 2009-03-13 15:51
为什么在使用top的时候有CPU states这一项,可是用top -n 1这样的命令却显示不出来呢,用grep也无法取到?
作者: 飞鸿无痕    时间: 2009-03-13 16:05
原帖由 shaneqi 于 2009-3-13 15:51 发表
为什么在使用top的时候有CPU states这一项,可是用top -n 1这样的命令却显示不出来呢,用grep也无法取到?


top -n number 比如top -n 1
man top就知道了!

[root@zhang shell]# top -n 1| grep "Cpu\|Mem\|Swap"
Cpu(s):  0.1% us,  0.8% sy,  0.0% ni, 98.9% id,  0.1% wa,  0.1% hi,  0.0% si
Mem:    125988k total,   120288k used,     5700k free,     9028k buffers
Swap:   305224k total,   109744k used,   195480k free,    39212k cached
作者: merlin852    时间: 2009-03-13 16:10
原帖由 飞鸿无痕 于 2009-3-13 16:05 发表


top -n number 比如top -n 1
man top就知道了!

[root@zhang shell]# top -n 1| grep "Cpu\|Mem\|Swap"
Cpu(s):  0.1% us,  0.8% sy,  0.0% ni, 98.9% id,  0.1% wa,  0.1% hi,  0.0% si
Mem:    125 ...



你放脚本里试试,看看能不能出来
作者: merlin852    时间: 2009-03-13 16:11
top -b -n 1|grep -E "Cpu|Mem"

剩下的自己写了,注意-b 和 -n
作者: 飞鸿无痕    时间: 2009-03-13 16:17
原帖由 merlin852 于 2009-3-13 16:10 发表



你放脚本里试试,看看能不能出来


看我的第一贴,我的可以执行啊!
作者: shaneqi    时间: 2009-03-13 16:21
标题: 回复 #8 飞鸿无痕 的帖子
我在用top时

last pid: 88760;  load averages:  0.10,  0.04,  0.02                                                       up 19+15:43:05  04:19:32
260 processes: 1 running, 252 sleeping, 7 stopped
CPU states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Mem: 1041M Active, 28G Inact, 231M Wired, 1293M Cache, 214M Buf, 237M Free
Swap: 32G Total, 100K Used, 32G Free

会有CPU states这一行,可是如果我用top -n 1

last pid: 88864;  load averages:  0.03,  0.03,  0.01  up 19+15:44:13    04:20:40
260 processes: 1 running, 252 sleeping, 7 stopped

Mem: 1040M Active, 28G Inact, 231M Wired, 1293M Cache, 214M Buf, 238M Free
Swap: 32G Total, 100K Used, 32G Free


  PID USERNAME   THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
2839 root         1  96    0  6640K  5212K select 0  16:03  0.00% nodeqd

那如果我想取出CPU States这一行,应该怎么取呢?
作者: ly5066113    时间: 2009-03-13 16:21
标题: 回复 #11 飞鸿无痕 的帖子
merlin852 是对的,要加 -b

更准确的说你的脚本在后台是得不到结果的,你可以试试:

urscript &
或者用crontab去掉,都是没有结果的。
作者: 飞鸿无痕    时间: 2009-03-13 16:22
原帖由 shaneqi 于 2009-3-13 16:21 发表
我在用top时

last pid: 88760;  load averages:  0.10,  0.04,  0.02                                                       up 19+15:43:05  04:19:32
260 processes: 1 running, 252 sleeping, 7 stopp ...


你用的什么系统,我的是OK的!
[root@zhang shell]# top -b -n 1
top - 04:21:08 up 1 day, 16:41,  2 users,  load average: 0.00, 0.02, 0.00
Tasks: 188 total,   1 running, 187 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1% us,  0.8% sy,  0.0% ni, 98.9% id,  0.1% wa,  0.1% hi,  0.0% si
Mem:    125988k total,   118940k used,     7048k free,     8468k buffers
Swap:   305224k total,   109744k used,   195480k free,    39188k cached
作者: 飞鸿无痕    时间: 2009-03-13 16:24
原帖由 ly5066113 于 2009-3-13 16:21 发表
merlin852 是对的,要加 -b

更准确的说你的脚本在后台是得不到结果的,你可以试试:

urscript &
或者用crontab去掉,都是没有结果的。


没测试在后台的,我试下,谢谢!!!
作者: shaneqi    时间: 2009-03-13 16:25
标题: 回复 #14 飞鸿无痕 的帖子
恩,刚才我再linux上看了一下也是可以的,不能显示的是在Freebsd,不知道什么原因。
作者: li2002    时间: 2009-03-13 16:26
要用b
作者: 飞鸿无痕    时间: 2009-03-13 16:28
原帖由 shaneqi 于 2009-3-13 16:25 发表
恩,刚才我再linux上看了一下也是可以的,不能显示的是在Freebsd,不知道什么原因。

加个-b试下???
作者: shaneqi    时间: 2009-03-13 16:30
标题: 回复 #18 飞鸿无痕 的帖子
top -b -n 1
last pid: 89612;  load averages:  0.04,  0.04,  0.00  up 19+15:53:27    04:29:54
264 processes: 2 running, 255 sleeping, 7 stopped

Mem: 1042M Active, 28G Inact, 168M Wired, 1293M Cache, 214M Buf, 294M Free
Swap: 32G Total, 100K Used, 32G Free


  PID USERNAME   THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
89419 gtradm       1  -1    0  2632K  1132K CPU1   1   0:02  0.20% find

还是不好使阿......




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2