由于经常学习Unix系统的一些知识,而且很喜欢Unix系统,在工作中也很喜欢总结关于Unix系统相关的经验教训,今天因工作需要,要抓取Unix系统top记录中的CPU统计这行,类似如下的内容:
- CPU states: 68.3% idle, 22.3% user, 7.6% kernel, 1.8% iowait, 0.0% swap
Unix系统需要把这段内容重定向到文件中,但是使用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
Unix系统中间丢失了有关CPU统计的信息。
觉得比较奇怪,于是找来了另外一台FreeBSD的机器来看看(公司的是solaris),结果也是同样的情况。问别人是否知道,结果她给我了一串top -b -n 1 -c > top.log。我试了下,不行!但是她说她那边是可以的。于是我问了下她用的是不是Unix系统,结果是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。这样就显示了上面开始时所提出的显示内容了。
【编辑推荐】