Czy można filtrować górę, aby pokazać określone procesy?

10

Jestem na topie i chcę zawsze widzieć java / tomcat / redis / mysql / mongo, czy to możliwe?

Blankman
źródło

Odpowiedzi:

16

Możesz zrobić coś takiego

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

Spowoduje pgrepto utworzenie rozdzielonej przecinkami listy pidów, które są przekazywanetop -p

Iain
źródło
Dużo prostsze :)
Mircea Vutcovici,
Próbowałem znaleźć sposób, aby znaleźć listę procesów dla wielu nazw procesów, dopóki nie zobaczyłem, jak to zrobiłeś.
user9517
1
Uwaga dla przyszłych widzów - ta metoda może nie dać oczekiwanych danych. a) tylko ta metoda przedstawia proces uruchomiony, gdy górna część jest rozpoczęty . Normalne zachowanie Top polega na pokazywaniu nowych procesów od początku. b) w górnej instrukcji, którą przeczytałem, napisano, że -p jest ograniczony do 20 identyfikatorów procesów. patrz: stackoverflow.com/questions/12075591/…
MaasSql
1
Po uruchomieniu na górze -c, wciśnij o i napisz filtr w kolumnie, np. Aby pokazać wiersze, w których kolumna COMMAND zawiera ciąg foo, napisz COMMAND = foo
MaasSql
6

Nie do końca to, czego szukasz, ale czasami proces jest uruchamiany przez jego własnego użytkownika, tak jak apache2 jest często uruchamiany przez www-dane użytkownika.

Możesz użyć tego, aby ograniczyć wyjście top tylko do procesów tego użytkownika, skutecznie pokazując tylko procesy apache2 za pomocą tego polecenia:

top -u www-data
DanMan
źródło
Świetny! Zastanawiałem się, jak wyświetlić listę procesów specyficznych dla użytkownika
razor7
5

Sprawdź stronę podręcznika man top, aby uzyskać więcej informacji na temat najwyższej użyteczności ...

Semms potrzebujesz parametru -p

-p: Monitoruj PID jako: -pN1 -pN2 ... lub -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.
Siergiej
źródło
4

Spróbuj tego:

alias mytop='echo $(sed "s/\([0-9]*\)/-p \1/g;s/^/top /" <(pgrep -d" " "java|redis|mysql|mongo"))'
mytop
Mircea Vutcovici
źródło