Назад | Перейти на главную страницу

Лучшие команды для определения общего использования процессора и памяти Linux-машины в следующей ситуации

Это в значительной степени вопросы от новичка. (Я просмотрел другие связанные вопросы и ответы, но, похоже, ни один из них не отвечал точно на мои собственные вопросы.)

Мне нужно удаленно извлекать, анализировать и сообщать в программе Java об использовании процессора и памяти Linux-машины. Это должно быть сделано двумя отдельными командами вместо одной, чтобы разделить их, чтобы упростить, если одну команду нужно будет изменить в будущем.

Итак, мои вопросы:

Под лучшим я подразумеваю вывод команд:

Спасибо!

Вместо того, чтобы заново изобретать колесо, я бы предложил использовать демон SNMP в системе, которую вы собираетесь отслеживать, и клиентскую библиотеку SNMP в вашем приложении Java.

Оба элемента, которые вы хотите отслеживать, включены в net-snmpстандартные MIB / OID.

Тогда вам не нужно беспокоиться об извлечении нужных вам переменных из вывода других утилит или переносимости того, как вы собираетесь безопасно транспортировать эту информацию (предположительно, удаленная оболочка).

Если вам действительно нужно анализировать вывод консольной команды, вы, вероятно, захотите сделать в нем как можно меньше конвейеров и grepping.

Команда, которая, вероятно, дает самый простой вывод, который вы можете проанализировать, - это vmstat.

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 4  0    420  54512  20408 1504148    0    0  1193   994  530 1397 10  6 76  7

Что касается памяти, помните, что `` свободная '' выше - это объем свободной памяти без учета буферов и кеша как свободных, поэтому вы, вероятно, захотите добавить бафф и кеш для освобождения, чтобы получить `` реальный '' свободный объем MiB (то есть физическая память, которая напрямую доступна системе для использования).

Ниже CPU значения us, sy, id и wa соответствуют 'user', 'system', 'idle' и 'iowait'. Как и все другие перечисленные инструменты, vmstat показывает состояние в определенный момент времени. Обязательно обновляйте почаще ;-)

Команда top отображает информацию как о памяти, так и о процессоре, а также другую статистику.

Если вы хотите вызвать его из скрипта или приложения, используйте флаг -n 1, чтобы он не запускался в интерактивном режиме.

например, чтобы запустить использование ЦП

 top -n 1 | grep "Cpu"
 (result)
 Cpu(s):  1.6%us,  1.8%sy,  0.0%ni, 92.1%id,  0.6%wa,  0.1%hi,  3.8%si,  0.0%st

для вызова использования памяти

top -n 1 | grep "Mem"
(result)
Mem:   1035240k total,   773088k used,   262152k free,   160348k buffers

Часть ответа «синтаксический анализ» включает в себя игру со стандартным выводом и форматированием строк в любом случае, если вы не используете SNMP, который (если это вариант) может дать вам гораздо больше информации.

Кроме того, команда «free» показывает числа об используемой памяти, «df» - об использовании диска, а «top» - о различных значениях.

верхняя

sysstat

обе команды дадут лучший результат от u H / W статус "верхний" лучше всего с RHEL

«Истинный способ Unix» - создавать сценарии с использованием доступных команд системной информации: free, ps, w, vmstat, iostat, ifstat, netstat и т. Д. (Подсказка: не используйте «top», это для интерактивного использования, черт возьми!)

«Способ Java» - это использовать библиотеку, сначала на ум приходит SNMP, но это может оказаться слишком большим молотком, чтобы расколоть такую ​​маленькую гайку.

Так :

  • если ваше приложение не будет расширяться, воспользуйтесь простым способом, используйте «ps», «w», проанализируйте «/ proc / meminfo» и т. д.
  • если ваше приложение должно развиваться дальше этой базовой потребности, перейдите по протоколу SNMP.

Если ваш сборщик написан на Java, вы можете рассмотреть возможность интеграции Сигар в ваше приложение. Sigar - это библиотека, которую инструмент мониторинга Hyperic использует для сбора статистики операционной системы.

мне нравиться htop за цвет и сортировку