Можно ли отфильтровать верх, чтобы показать конкретные процессы?

Ответы:

16

Вы могли бы что-то вроде этого

top -p `pgrep -d ',' "java|tomcat|redis|mysql|mongo"`

Это позволяет pgrepполучить список pid, разделенных запятыми, которые передаютсяtop -p

иан
источник
Гораздо проще :)
Мирча Вутцовичи
Я изо всех сил пытался выяснить, как найти список процессов для нескольких имен процессов, пока не увидел, как вы это сделали.
user9517
1
Примечание для будущих зрителей - этот метод может не дать вам ожидаемые данные. а) этот метод показывает только обрабатывает работу , когда сверху начали . Нормальное поведение Top - показывать процессы, которые были новыми с самого начала. б) верхнее руководство, которое я прочитал, говорит, что -p ограничено 20 идентификаторами процесса. см .: stackoverflow.com/questions/12075591/…
MaasSql
1
После запуска top -c нажмите o и напишите фильтр в столбце, например, чтобы показать строки, в которых столбец COMMAND содержит строку foo, напишите COMMAND = foo
MaasSql
6

Не совсем то, что вы ищете, но иногда процесс запускается собственным пользователем, например, apache2 часто запускается пользователем www-data.

Вы можете использовать это, чтобы ограничить вывод top только процессами этого пользователя, эффективно показывая только процессы apache2 с помощью этой команды:

top -u www-data
DanMan
источник
Большой! Мне было интересно, как перечислить пользовательские процессы
razor7
4

Проверьте man top page для более подробной информации о top utility ...

Semms вам нужен параметр -p

-p: контролировать PID как -pN1 -pN2 ... или -pN1, N2 [, ...]

        Monitor only processes with specified process  IDs.   This  option
        can  be given up to 20 times, or you can provide a comma delimited
        list  with  up  to  20  pids.   Co-mingling  both  approaches   is
        permitted.
Сергей
источник
4

Попробуй это:

alias mytop='echo $(sed "s/\([0-9]*\)/-p \1/g;s/^/top /" <(pgrep -d" " "java|redis|mysql|mongo"))'
mytop
Мирча Вуцовичи
источник