【发布时间】:2017-01-17 21:37:47
【问题描述】:
我有超过 100 台服务器,都使用不同的 CPU,可能有 2 到 16 个内核。
我可以通过以下命令获取每个核心的空闲 CPU(dstat 安装在所有服务器上):
dstat -c -C 0,1,2,3,4,5,6,7 --noheaders --nocolor --noupdate 3 1
我知道执行时的核心数量,因此进入 -C 的核心数量会有所不同。输出如下:
-------cpu0-usage------ -------cpu1-usage------ -------cpu2-usage------ -------cpu3-usage------ -------cpu4-usage------ -------cpu5-usage------ -------cpu6-usage------ -------cpu7-usage------
usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq:usr sys idl wai hiq siq
5 3 90 0 0 2: 4 3 91 0 0 2: 4 3 91 0 0 2: 6 4 88 0 0 2: 2 1 96 0 0 1: 2 1 96 0 0 1: 2 1 96 0 0 1: 7 5 75 0 0 13
3 1 95 0 0 1: 2 1 96 0 0 0: 5 2 93 0 0 1: 2 1 96 0 0 1: 1 0 99 0 0 0: 1 1 97 0 0 1: 1 0 98 0 0 0: 23 16 16 0 0 45
我需要从最后一行“提取”每个核心的 idl 值,并以逗号分隔的格式将其吐出。所以从上面的数据集中,我想得到以下输出:
95,96,93,96,99,97,98,16
我的 grep/awk-foo 很差,有人可以帮忙吗?
【问题讨论】: