нужно получить среднее время простоя с помощью mpstat

987
KumarJohn

Я хочу получить среднее время простоя сервера, используя mpstat. Проблема, с которой я столкнулся, заключается в том, что% idle находится не в тех же столбцах во всех версиях linux.

пример 1:

[root@testserver ~]# mpstat 1 2 Linux 2.6.32-358.el6.x86_64 (testserver) 06/18/2015 _x86_64_ (2 CPU)  12:41:17 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle 12:41:18 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 12:41:19 AM all 0.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 99.00 Average: all 0.25 0.00 0.25 0.00 0.00 0.00 0.00 0.00 99.50 

пример 2:

[root@testserver1 ~]# mpstat 1 2 Linux 2.6.18-308.8.2.el5 (testserver1) 06/17/2015  10:47:38 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:47:39 PM all 0.12 0.00 0.00 0.00 0.00 0.00 0.00 99.88 191.09 10:47:40 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 134.00 Average: all 0.06 0.00 0.00 0.00 0.00 0.00 0.00 99.94 162.69 

Я попробовал приведенную ниже команду в качестве обобщенного решения, но средний результат на один столбец меньше не подходит.

mpstat 1 2 | egrep -v '^Linux|^$' | awk -v c="%idle" 'NR==1 ''' 

Я получаю ниже выхода.

[root@testserver ~]# mpstat 1 2 | egrep -v '^Linux|^$' | awk -v c="%idle" 'NR==1 ''' %idle 100.00 100.00 

Но желаемый результат

[root@testserver ~]# mpstat 1 2 | egrep -v '^Linux|^$' | awk -v c="%idle" 'NR==1 ''' %idle 100.00 100.00 100.00 

С наилучшими пожеланиями, KJ

0

1 ответ на вопрос

1
fedorqui

You can use:

awk '/%idle/ } /^Average:/ ' 

This stores the column where %idle is and substracts one because Average: does not have the PM/AM column. Then, it prints that column when the line starts with Average:.

Test

With sample1:

$ awk '/%idle/ } /^Average:/ ' a 99.50 

With sample2:

$ awk '/%idle/ } /^Average:/ ' b 99.94 

Похожие вопросы