Как показать первую пятерку процессорных процессов с ps?
Зачем использовать ps
когда вы можете сделать это легко с помощью top
команды?
Если вы должны использовать ps
, попробуйте следующее:
ps aux | sort -nrk 3,3 | head -n 5
Если вы хотите что-то действительно «top'esq с постоянными обновлениями, используйте часы
watch "ps aux | sort -nrk 3,3 | head -n 5"
Правильный ответ :
ps --sort=-pcpu | head -n 6
Таким образом, вы можете указать столбцы, не мешая сортировке.
Пример:
ps -Ao user,uid,comm,pid,pcpu,tty --sort=-pcpu | head -n 6
В зависимости от ваших потребностей вы можете найти это немного более читаемым:
ps -eo pcpu,pid,user,args --no-headers| sort -t. -nk1,2 -k4,4 -r |head -n 5
выход образца:
1.3 4 root [ksoftirqd/0] 1.1 9 root [ksoftirqd/1] 1.0 17606 nobody /usr/sbin/gmetad 1.0 13 root [ksoftirqd/2] 0.3 17401 nobody /usr/sbin/gmond
(поля% CPU, PID, USER, COMMAND)
Я не думаю, что ps
– это то, что вы ищете. Вы посмотрели на результат top
?
Если у вас есть GNU-Top, попробуйте использовать его пакетный режим, чтобы выплеснуть список процессов, отсортированный по использованию процессора, и использовать head / tail, чтобы получить верхние 5 строк (первые 8 являются заголовками):
top -b -n 1 | head -n 12 | tail -n 5
Похоже, что верх BSD ведет себя по-разному и не имеет неинтерактивного режима, поэтому используйте один из других решений на основе ps
.
Обратите внимание, что текущие версии ps обладают способностью сортировки внутри них на основе кодов полей (приведенных на странице man ps). Код поля для использования процессора – «c». Вы можете использовать --sort c
в конце команды ps, например ps aux --sort c
Это приведет к тому, что процесс будет использоваться с большинством процессоров в нижней части списка. Обратный порядок списка, добавляя минус к коду поля, используемому для сортировки, например, ps aux --sort -c
Самый быстрый один вкладыш, который я нашел для этого (примечание 6, потому что заголовок складывается):
ps aux k-pcpu | head -6
Чтобы добавить точку к другим ценным ответам, я предпочитаю:
ps auxk-c | head -6
Он также печатает заголовок, что приятно.
Здесь k
идентичен --sort
и c
указывает поле использования процессора (псевдоним %cpu
) для сортировки, а -
для обратного сортировки.
Вы можете добавить больше спецификаторов, разделенных bsdstart
другие возможные спецификаторы: %mem
, args
, bsdstart
, pid
, gid
, uid
… которые вы можете найти полный список в разделе STANDARD FORMAT SPECIFIERS на странице man. Например:
ps auxk -gid,-%mem | head -11
будет печатать 10 процессов с наивысшим идентификатором группы, внутренне отсортированным по использованию памяти.
Средство командной строки ps
имеет свой собственный вариант сортировки, поэтому я предпочитаю:
$ ps -eo pcpu,args --sort=-%cpu | head
Вы можете добавить нужные столбцы. Посмотрите, какие другие параметры доступны на странице ps
man.
$ man ps
top
на Mac OS X имеет параметр режима ведения журнала в форме top -l numberOfSamples
(что, похоже, эквивалентно пакетному режиму GNU top
). Необходимо, однако, иметь как минимум два образца, потому что «первый отображаемый образец будет иметь недопустимый% CPU, отображаемый для каждого процесса, поскольку он вычисляется с использованием дельта между выборками» ( man 1 top
).
# examples top -o cpu -l 2 -n 5 | tail -n 6 top -o cpu -l 2 -n 5 -stats pid,command,cpu | tail -n 6 top -o cpu -l 2 -n 5 -stats pid,command,cpu -U $(logname) | tail -n 6
top
отобразит, что использует ваш процессор. Если вы его установили, htop
позволяет вам более мелкомасштабное управление, включая фильтрацию в вашем корпусе CPU.
top -bn1 |sed -n '7,12'p
работает как приятный маленький лайнер.
Хотя я предпочитаю использовать ps с –sort = X -o X, Y, Z
используя ps, вы можете вытащить разные статистики grep для процесса ИЛИ пользователя, а затем суммировать ИЛИ avg их с трубой до awk.