Рассчитать использование процессора из верхней команды в linux - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно отобразить загрузку процессора в моем приложении и обновить его в режиме реального времени. Я использую команду top для получения загрузки ЦП, т.е. top command

Я добавляю два выделенных значения для получения загрузки ЦП. Команда, которую я использую, чтобы добавить выделенные значения и получить окончательное использование процессора:

top -b -n 2 | grep Cpu | awk '{printf "CPU Load:%.2f\n", $(NF-13) + $(NF-15)}' | sed -n '2 p'

Проблема в том, что эта команда перестает работать через некоторое время, т.е. на 3-4 минуты я получаю использование процессора но после этой команды не обрабатывается и я не получаю обновленное значение. Я запускаю эту команду в al oop.

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 04 мая 2020

Я использую аналогичный скрипт без проблем в течение некоторого времени:

top -bn2 | grep Cpu | tail -n1 | sed -e 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100-$1}'

Скрипт берет время простоя из верхнего вывода и вычитает его из 100% для получения загрузки процессора.

Периодичность l oop, в которой вы вызываете скрипт, не должна быть быстрее, чем время, необходимое скрипту для завершения sh. В противном случае, вы можете получить несколько топов, работающих параллельно. В первую очередь это зависит от «верхней» задержки по умолчанию в вашей системе, у меня она составляет около 5 с, но вы можете установить ее с помощью ключа -d.

...