快速业务通道

unix下的top命令问题

作者 佚名技术 来源 操作系统 浏览 发布时间 2012-06-28

今天因工作需要,要抓取top记录中的CPU统计这行,类似如下的内容:

CPU states: 68.3% idle, 22.3% user, 7.6% kernel, 1.8% iowait, 0.0% swap

需要把这段内容重定向到文件中,但是使用top -b 这样的参数不能实现这样的效果,重定向到文件中的内容如下:

last pid: 53372; load averages: 0.00, 0.00, 0.00 up 1+03:32:16 18:28:11
37 processes: 1 running, 35 sleeping, 1 zombie

Mem: 22M Active, 342M Inact, 60M Wired, 2068K Cache, 111M Buf, 459M Free
Swap: 6144M Total, 6144M Free

中间丢失了有关CPU统计的信息。

觉得比较奇怪,于是找来了另外一台FreeBSD的机器来看看(公司的是solaris),结果也是同样的情况。问我老婆是否知道,结果她给我了一串top -b -n 1 -c > top.log。我试了下,不行!但是她说她那边是可以的。于是我问了下她用的操作系统,结果是linux的。可能找到问题了,于是我找来一个linux的机器测试了下,果然跟操作系统有关。我晕了。找了好多地方都没有类似这样的实现方法。

最后还是在一个之前看过的网页中找到了办法,这个网页之前被我忽略了,以为是一般的问题。后来按照上面说的以-d参数来实现(应该是指delay的意思吧)。top -d 2 这样就有了,如下:

last pid: 53376; load averages: 0.00, 0.00, 0.00 up 1+03:32:48 18:28:43
39 processes: 1 running, 37 sleeping, 1 zombie
CPU states: % user, % nice, % system, % interrupt, % idle
Mem: 23M Active, 342M Inact, 60M Wired, 2068K Cache, 111M Buf, 457M Free
Swap: 6144M Total, 6144M Free

原来是unix在统计信息的时候,一开始没有CPU的信息,需要过几秒种才有显示。这就是-d参数的作用了。完整的用法:top -d 2 0 | grep CPU。这样就显示了上面开始时所提出的显示内容了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号