Наверное, вопрос в том, могу ли я как-нибудь рассчитать процент использования ЦП, просто прочитав / proc / stat один раз?
# head -1 /proc/stat
cpu 67891300 39035 6949171 2849641614 118251644 365498 2341854 0
Я думаю о суммировании столбцов, кроме IOWait (я где-то читал, что он считается в простое), и это дало бы мне 100%, и каждый отдельный столбец можно было бы превратить в процент на (column / 100_percent) * 100.
- пользователь: обычные процессы, выполняющиеся в пользовательском режиме
- приятно: приятные процессы, выполняющиеся в пользовательском режиме
- система: процессы, выполняющиеся в режиме ядра
- холостой ход
- iowait: ожидание завершения ввода-вывода
- IRQ: обслуживание прерываний
- softirq: обслуживание softirqs
- украсть: непроизвольное ожидание
- гость: работает обычный гость
- guest_nice: запуск приятного гостя
Это жизнеспособный подход или я совершенно не в курсе?
Если вам нужен oneliner, он может выглядеть так:
Результат:
97.17000000000000000000
Как это устроено:
производит
( 1055057784 - 1055058055 )/100
затем этот перевод строки до н.э. Будет что-то вроде-7.84000000000000000000
, затем просто оберните его100-$(value)
и снова подайте на bcТам:
sleep #
- 1 секунда задержки, если вы измените это значение, то промежуточный результат должен быть разделен на количество секунд.$5
- 5-е поле, согласноman proc
и http://www.linuxhowtos.org/System/procstat.htmПожалуйста, дайте мне знать, если это не работает для вас.
источник
Или, если вы довольны двумя цифрами после точки, awk может сделать все намного проще и удобочитаемее:
источник