Как я могу получить процент использования ЦП и процент оперативной памяти, напечатанные в одной строке в Linux? (Используя cli)
Я должен передать эти выходные строки на ЖК-дисплей.
Большое спасибо
Как я могу получить процент использования ЦП и процент оперативной памяти, напечатанные в одной строке в Linux? (Используя cli)
Я должен передать эти выходные строки на ЖК-дисплей.
Большое спасибо
top -bn1 | awk '/Mem/ { mem = "Memory in Use: " $5 / $3 * 100 "%" };
/Cpu/ { cpu = "CPU in Use: " 100 - $8 "%" };
END { print mem ", " cpu }'
Он будет использовать пакетный режим top для однократной печати статистики, которую вы затем сможете анализировать любым способом с помощью awk. Например, приведенный выше код дал это в моем тесте:
Используемая память: 93,866%, загрузка процессора: 1,7%
Очевидно, ваш вывод будет отличаться. Вы также можете настроить формат вывода, если вам нужно больше (или меньше) информации.
Вы можете проанализировать вывод некоторых утилит Unix, таких как vmstat
:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 75812 282632 115704 891332 0 1 22 54 138 362 15 2 80 2
$ vmstat | sed -n '3s/ \+/\t/gp' | cut -f5,14
280904 15
Выше печатает свободную память и использование процессора.
Если вы хотите использовать память, вы можете использовать другую утилиту, например top
в пакетном режиме, как это было предложено CodeGnome и мной в предыдущем ответе.
$ top -bn1 | sed -rn '3s/[^0-9]* ([0-9\.]+) .*/\1/p;4s/.*, ([0-9]+) .*/\1/p' | tr '\n' ' '
10.4 3787340
Или, чтобы получить проценты, вы можете сделать
$ top -bn1 | \
> sed -rn '3s/[^0-9]* ([0-9\.]+) .*/\1/p;4s/[^0-9]*([0-9]+)[^0-9]+([0-9]+) .*/\1 \2/p' | \
> { read cpu; read tot used; echo $cpu $(( 100*used/tot )); }
10.3 94
Я уверен, что есть более элегантные решения.