Я пытаюсь выполнить команду Linux через PHP-скрипт, чтобы получить процент загрузки процессора для каждого ядра:
... с cut
:
$output = null;
passthru("mpstat -P ALL | grep 0 | tr -s ' ' | cut -d ' ' -f 4", $output);
echo "$output <br>";
... с awk
:
$output = null;
passthru("mpstat -P ALL | grep 0 | tr -s ' ' | awk '{print $4}'", $output);
echo "$output <br>";
с двумя утверждениями вывод:
имя моего сервера 2,19 2,21 2,30 2,26 2,22 2,20 2,14 2,09 2,07 0
Мой сервер имеет 8-ядерный процессор, и я хочу использовать вывод непосредственно в диаграммах Google, поэтому мне нужен только процент ЦП для 8 ядер, без имени сервера.
Можете помочь мне с этим вопросом?
echo(implode("\n", $output)[1]);
делает то, что вам нужно?awk
илиcut
команду?mpstat -P ALL
? Выполняя те же команды, что и вы, я не получаю имя хоста на выходе. Я получил следующее (4 ядра): `23.05.2013% usr 6,71 8,05 7,45 5,87 5,48`.Ответы:
Я повторяю строку, потому что моя система
mpstat
отличается от того, что вы показываете в своем вопросе, но она должна работать, если ваш вывод - это то, что вы опубликовали.Скрипт Perl просто ищет самую длинную последовательность цифр, десятичных точек и пробелов (
[\d\. ]+
) и печатает ее, которая должна отделять имена серверов от данных с произвольными именами серверов. Это не удастся, если имя вашего сервера заканчивается цифрой, что-то вродеfoo bar 12
. Он будет восприниматься не12
как часть имени сервера, а как часть данных.Если имена ваших серверов никогда не содержат пробелов (что, я полагаю, не содержит пробелов), вы можете использовать эту
gawk
версию, если вы предпочитаете:источник