Я пытаюсь собрать некоторые статистические данные использования диска, как указано здесь для использования с этим nagios плагином
Короче говоря это должно получить tps для второй лекции в выводе, прибывающем из iostat как это:
/usr/bin/iostat -d /dev/vda -t 1 | grep -n vda | grep 9:vda | awk -F" " '{print $2;}'
Проблема состоит в том что второе grep
привычка собирает что-либо.
Я попробовал что-то похожее с find
это делает то же самое и, кажется, работает хотя
find | grep -n ./home | grep 9:./home
Более короткая версия команды, которая воспроизводит проблему, похожа так
iostat -d /dev/vda -t 1 | grep -n vda | grep 9:vda
Я запускаю Ubuntu 16.04 с grep 2.25
$ grep --version
grep (GNU grep) 2.25
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
Alvin Lang привел причину, почему второй grep ничего не производит быстро. Тем не менее, если Вы просто хотите второе соответствие, можно сказать grep
выходить после второго соответствия (-m2
) и проводите последнюю строку:
$ iostat -d /dev/vda -t 1 | grep -n vda -m2 | awk 'END {print $2}'
19.00
Или даже сделайте всю вещь (соответствие и подсчет) в awk:
iostat -d /dev/vda -t 1 | awk '/vda/ && ++count == 2 {print $2; exit}'
( find
команда, работавшая лучше, вероятно, потому что это заполнило буферы grep намного быстрее, чем iostat, могла. Чистый объем вывода от find
не что-то iostat
может надеяться соответствовать.)