przystajnik

Terminal pogryzł człowieka: ps

Jeżeli ktoś po przeczytaniu nagłówka zakrztusił się herbatą, to znaczy, że już cokolwiek poznał systemy linuksowe. Bowiem polecenie ps jest tak wrośnięte w ich klimaty, że zgoła mało kto zadaje sobie pytanie jak to działa i do czego służy. A warto wiedzieć choćby o paru możliwościach ps, by ułatwić sobie pracę i ewentualną reakcję w sytuacjach kryzysowych.

Jak zapewne wiadomo, polecenie ps wyświetla listę aktualnych procesów. Mogą to być procesy konkretnego użytkownika a dodatkowo dowiemy się, ile zużywają pamięci, mocy CPU, w jakim są stanie i tak dalej. Najczęściej spotykane są te ze statusem R (działające), S (uśpione) lub Z (procesy nieprawidłowo zamknięte – lub wcale – przez swojego rodzica). Żeby jednak nie było za łatwo, ps obsługuje trzy „standardy” wejścia (wpisywanych parametrów) i wyjścia (format wyświetlanych informacji).

       1   opcje wg standardu UNIX options, poprzedzone myślnikiem,
       2   opcje wg standardu BSD, bez myślnika,
       3   opcje wg standardu GNU (długie), poprzedzone dwoma myślnikami.

To powoduje, że niektóre parametry możemy podawać w jednym z trzech tożsamych wariantów (o, -o, --format, p, -p, –pid), niektóre wymagają uwagi (U, -u, --user) a jeszcze inne są z kompletnie różnych światów. Dlatego proste wylistowanie wszystkich procesów można osiągnąć na kilka sposobów:

składnia UNIX

ps -e
ps -eF
ps -elyf

składnia BSD

ps ax
ps aux

Ale to, co szczególnie się może nam przydać (oprócz przeczytania manuala do ps) to sortowanie i wyświetlanie procesów wg kryteriów określonych przez nas samych. Do tego celu musimy zaznajomić się z działaniem formatowania wyjścia, czyli uzyskiwania tych danych, które nas interesują. Do tego celu pomocne są parametry o, -o, --format i wartości, które muszą zawierać się w liście STANDARD FORMAT SPECIFIERS. Najpopularniejsze to:

%cpu - zużycie CPU przez proces,
%mem - procentowe zużycie pamięci przez proces (stosunek RSS do ilości pamięci),
pid - numer procesu
cmd - polecenie z parametrami,
comm - polecenie w skróconej formie,
rss - realna zajętość pamięci przez proces,
user - właściciel procesu

Aby dodatkowo je posortować, należy użyć --sort. Do czego to może być przydatne? Choćby znalezienie procesu najbardziej obciążającego nasz procesor:

ps -eo pid,comm,%cpu --sort -%cpu | head

Jak wiemy, -e oznacza wyświetlenie wszystkich procesów, -o uskutecznia formatowanie opisane przez: pid, comm, %cpu (czyli wyświetlenie tylko informacji o numerze procesu, komendzie i zużyciu przez nie CPU). Następnie sortujemy malejąco (+ rosnąco) i wg której kolumny. Przekierowujemy całość do head, by otrzymać pierwszą dziesiątkę najbardziej uciążliwych procesów. Podobnie możemy posortować procesy wg zużycia pamięci i wyświetlić pełne polecenie (z parametrami).

ps -eo pid,cmd,rss,%cpu --sort -rss | head

A oto wynik:

  PID CMD                           RSS %CPU
 3504 /usr/lib/firefox/firefox    737760 13.1
 3386 /usr/bin/quiterss -session  276804 0.2
 3259 kded5 [kdeinit5]            215728 0.1
 3304 /usr/bin/plasmashell --shut 180876 0.3
 3284 kwin_x11 -session 10eb70656 104540 1.0
 3290 /usr/bin/krunner            85856  0.0
 4288 /usr/bin/konsole            74324  0.6
 2932 /usr/lib/xorg/Xorg -noliste 70536  2.0
 3361 /usr/bin/korgac -session 10 54232  0.0

Post navigation

Translate »