以下是输出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) 中做到这一点?
问候, 尤维
以下是输出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) 中做到这一点?
问候, 尤维
请参阅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 。我相信人们可以想出更好的脚本,但我认为他们展示了校长。
我会用 c
使用 fork()、pipe() 和 execl()
1.创建管道()
2.做一个fork()
3.儿子。处理 execl() 输出并发送到管道
4.父亲。等待、接收和显示所需字段
所有这些都在一个循环中