如何在linux shell脚本中获取cpu sirq?

时间:2013-05-08 12:25:11

标签: linux shell embedded-linux sh

以下是top -b

的输出
Mem: 95752K used, 29164K free, 0K shrd, 0K buff, 35176K cached
CPU:   5% usr   9% sys   0% nic   0% idle   0% io   0% irq  84% sirq

我需要持续监控sirq,如何在shell脚本(sh)中执行此操作?

此致 Yuvi

2 个答案:

答案 0 :(得分:0)

我会用c

使用fork()一个pipe()和一个execl()

1.create pipe()

2.do fork()

3.son。处理execl()输出并发送到管道

4.father。等待,接收并显示所需的字段

这一切都在循环中

答案 1 :(得分:0)

请参阅Linux内核proc.txt document第1.8节。同样具有指导意义的是busybox top source。来自 proc.txt 文档的第1.8节

  

1.8 / proc / stat

中的其他内核统计信息      

有关内核活动的各种信息   / proc / stat文件。此文件中报告的所有数字都是聚合   自从系统首次启动。快速查看,只需捕获文件即可。

     

“softirq”行给出了自启动时间以来服务的softirq数量   可能的系统softirqs。第一列是所有的总和   softirqs服务;每个后续列都是该特定的总和   软中断。

因此,以下命令获取启动后的总数,

cat /proc/stat | grep softirq | awk '{print $2}'

您必须在脚本中进行一些数学运算才能获得 delta

每个CPU行都有 softirq 值。这是第八项,并再次手动增加时间

cat /proc/stat  | grep cpu[^0-9] | awk '{ print $8}'

如果您愿意,可以单独选择每个 CPU 。我相信人们可以提出更好的剧本,但我认为他们会展示校长。