Как извлечь значение простоя процессора из команды sar с помощью AWK - PullRequest
0 голосов
/ 12 июня 2018

Исходя из команды sar, я хочу извлечь только те строки, в которых значение %iowait превышает установленный порог.Я попытался использовать AWK, но почему-то я не смог выполнить действие.

sar -u -f sa12 | sed 's/\./,/g' | awk -f" " '{ if ( $7 -gt 0 ) print $0 }'

Я попытался заменить . на , и использовать -gt, но все равно не радости.Может кто-нибудь предложить решение?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Если нам нужен вывод всей строки sar -u с iowait > 0.01, тогда мы можем использовать это,

Команда

sar -u | grep -v "CPU" | awk '$7 > 0.01'

Выводбудет похож на

03:40:01 AM     all      3.16      0.00      0.05      0.11      0.00     96.68
04:40:01 PM     all      0.19      0.00      0.05      0.02      0.00     99.74

, если вы хотите исключить определенные поля, скажем, только iowait, мы можем использовать, как указано ниже,

Команда для вывода конкретного поля(s),

sar -u | grep -v "CPU" | awk '{if($7 > 0.01 ) print $7}'

Вывод будет

0.11
0.02

Примечание : grep -v используется только для удалениязаголовки в выводе

Надеюсь, это поможет,

0 голосов
/ 12 июня 2018

My sar -u дает несколько строк, похожих на следующие:

Linux 4.4.0-127-generic (v1)    06/12/2018      _x86_64_        (1 CPU)

12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
12:05:01 AM     all      0.29      0.00      0.30      0.01      0.00     99.40
12:15:01 AM     all      0.33      0.00      0.34      0.00      0.00     99.32
12:25:01 AM     all      0.33      0.00      0.30      0.01      0.00     99.36
12:35:01 AM     all      0.31      0.00      0.29      0.01      0.00     99.39
12:45:01 AM     all      0.33      0.00      0.32      0.01      0.00     99.35
12:55:01 AM     all      0.32      0.00      0.30      0.00      0.00     99.38
01:05:01 AM     all      0.32      0.00      0.28      0.00      0.00     99.39
01:15:01 AM     all      0.33      0.00      0.30      0.01      0.00     99.37
01:25:01 AM     all      0.31      0.00      0.30      0.01      0.00     99.39
01:35:01 AM     all      0.31      0.00      0.33      0.00      0.00     99.36
01:45:01 AM     all      0.31      0.00      0.28      0.01      0.00     99.40
01:55:01 AM     all      0.31      0.00      0.30      0.00      0.00     99.38
02:05:01 AM     all      0.31      0.00      0.28      0.01      0.00     99.40
02:15:01 AM     all      0.32      0.00      0.30      0.01      0.00     99.38
02:25:01 AM     all      0.31      0.00      0.30      0.01      0.00     99.38
02:35:01 AM     all      0.33      0.00      0.33      0.00      0.00     99.33
02:45:01 AM     all      0.35      0.00      0.32      0.01      0.00     99.32
02:55:01 AM     all      0.28      0.00      0.30      0.00      0.00     99.42
03:05:01 AM     all      0.32      0.00      0.31      0.00      0.00     99.37
03:15:01 AM     all      0.34      0.00      0.30      0.01      0.00     99.36
03:25:01 AM     all      0.32      0.00      0.29      0.01      0.00     99.38
03:35:01 AM     all      0.33      0.00      0.26      0.00      0.00     99.40
03:45:01 AM     all      0.34      0.00      0.29      0.00      0.00     99.36
03:55:01 AM     all      0.30      0.00      0.28      0.01      0.00     99.41
04:05:01 AM     all      0.32      0.00      0.30      0.01      0.00     99.37
04:15:01 AM     all      0.37      0.00      0.31      0.01      0.00     99.32
04:25:01 AM     all      1.78      2.04      0.59      0.05      0.00     95.55

Чтобы отфильтровать те, в которых %iowait больше, скажем, 0.01:

sar -u | awk '$7>0.01{print}'
Linux 4.4.0-127-generic (v1)    06/12/2018      _x86_64_        (1 CPU)
04:25:01 AM     all      1.78      2.04      0.59      0.05      0.00     95.55
05:15:01 AM     all      0.34      0.00      0.32      0.02      0.00     99.32
06:35:01 AM     all      0.33      0.22      1.23      4.48      0.00     93.74
06:45:01 AM     all      0.16      0.00      0.12      0.02      0.00     99.71
10:35:01 AM     all      0.22      0.00      0.13      0.02      0.00     99.63
12:15:01 PM     all      0.42      0.00      0.16      0.03      0.00     99.40
01:45:01 PM     all      0.17      0.00      0.11      0.02      0.00     99.71
04:05:01 PM     all      0.15      0.00      0.12      0.03      0.00     99.70
04:15:01 PM     all      0.42      0.00      0.23      0.10      0.00     99.25

Редактировать:

Как правильно указано @ Ed Morton , код awk можно сократить до простого awk '$7>0.01', поскольку действие по умолчаниюраспечатать текущую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...