2

以下是输出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 script(sh) 中做到这一点?

问候, 尤维

4

2 回答 2

1

请参阅Linux Kernel proc.txt 文档的第 1.8 节。同样很有启发意义的是busybox top source。 从proc.txt文档的第 1.8 节,

1.8 /proc/stat 中的其他内核统计信息

/proc/stat 文件中提供了有关内核活动的各种信息。此文件中报告的所有数字都是自系统首次启动以来的汇总。为了快速查看,只需 cat 文件。

“softirq” 行给出了自启动以来服务的软中断计数,用于每个可能的系统软中断。第一列是服务的所有软中断的总数;随后的每一列都是该特定软中断的总数。

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

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

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

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

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

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

于 2013-05-15T19:46:23.077 回答
0

我会用 c

使用 fork()、pipe() 和 execl()

1.创建管道()

2.做一个fork()

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

4.父亲。等待、接收和显示所需字段

所有这些都在一个循环中

于 2013-05-08T12:31:31.393 回答