Когда я выполняю следующую команду, чтобы получить использование процессора, я получаю хорошее + пользовательское использование процессора.
top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}'
Выход:
14.5
Здесь я получаю проблему, заключающуюся в том, что вывод зависит от команды top, поэтому она не изменяется мгновенно как команда top. Поэтому я не получаю правильный процессор мгновенно. Это дает тот же вывод и не меняется.
Я хочу получить в режиме реального времени использование процессора в выводе. Пожалуйста, помогите мне улучшить мою команду.
command-line
top
Кетан Патель
источник
источник
Ответы:
Если вы можете позволить себе задержку в одну секунду, это напечатает загрузку процессора в виде простого процента:
(Без задержки в одну секунду
vmstat
можно печатать только средние значения с момента загрузки.)источник
vmstat 1 2
это следующим образом:echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
В противном случае вашvmstat
будет давать значения с момента загрузки, что, вероятно, не то, что вы после.Это известная проблема с
top
. Как объяснено здесь , первая итерацияtop -b
возвращает проценты с момента загрузки, поэтому нам нужно как минимум две итерации (-n 2
) для получения текущего процента. Чтобы ускорить процесс, вы можете установить значениеd
elay между итерациями равным0.01
.top
распределяет загрузку процессора между пользователем, системными процессами иnice
процессами, нам нужна сумма трех. Наконец, выgrep
в строке, содержащей проценты ЦП, а затем используетеgawk
для суммирования пользовательских, системных и хороших процессов:источник
top
будет сообщаться процент использования в процентах от одного ЦП. Это означает, что вы часто будете получать гораздо более высокие проценты. Смотрите пункт 9 здесь .top
в интерактивном режиме (просто запуститьtop
), а затем нажатьI
(shift + i), чтобы увидеть разбивку по ядрам.Я пробовал несколько способов, но это кажется мне наиболее точным:
Получил это отсюда
источник
%.1f
что, на мой взгляд, более читабельно и полезно для человека, если вы используете этот вывод в других скриптах.Использование
-n2
. Это выведет две строки. При первойtop
печати строка не соответствует состоянию на данный момент времени. Затем настройте ваш скрипт так, чтобы он игнорировал первую строку.источник