Skip to main content

Obsługa komendy "ps" - Proces Status

Komenda ps (process status) jest jednym z fundamentalnych narzędzi administracyjnych do monitorowania procesów w systemach Unix/Linux. Pozwala na identyfikację, śledzenie i diagnostykę działających aplikacji. W pracy z serwerami (szczególnie przy Proxmox, FreeBSD czy administracji gra serwerów MT2) niezbędna jest umiejętność interpretacji wyniku ps.

Podstawowe użycie ps

ps

Wyświetla procesy bieżącego użytkownika w aktualnej sesji terminalowej. Bardzo podstawowe, rzadko wystarczające dla administratora.

image.png

Przeglądanie wszystkich procesów z pełnymi informacjami

ps aux

To najczęstsze polecenie dla administratorów. Wyświetla wszystkie procesy w systemie (a – wszystkie, u – szczegółowy format, x – procesy bez terminala). Kolumny oznaczają: USER (właściciel), PID (ID procesu), %CPU (procent CPU), %MEM (procent pamięci), VSZ (rozmiar wirtualny), RSS (resident set size – fizyczna pamięć), TTY (terminal), STAT (status), START (czas startu), TIME (czas CPU), COMMAND (polecenie).

image.png

Alternatywny format wyświetlania

ps -ef

Inny sposób na wyświetlenie wszystkich procesów, bardziej zbliżony do formatu Linuksa (zamiast BSD-owego aux). PPID (ID procesu nadrzędnego) jest tu bardziej widoczne.

image.png

Filtrowanie procesów konkretnego użytkownika

ps -u 'nazwa_usera'

image.png

Pokazuje tylko procesy należące do użytkownika admin. Przydatne gdy szukamy co robi konkretny użytkownik.

ps -u root,www-data

Procesy należące do wielu użytkowników naraz.

Wyszukiwanie konkretnych procesów

ps aux | grep 'nazwa procesu'

Wyszukuje procesy związane z danym procesem

image.png

ps aux | grep -v grep
image.png
image.png

Eliminuje z wyniku samo polecenie grep (często pojawia się w wynikach).

pgrep -lf 'nazwa_procesu'

Szuka procesu po pełnej nazwie polecenia (bardziej precyzyjne niż grep).

image.png

Sortowanie procesów

ps aux --sort=-%cpu | head -20

Wyświetla 20 procesów zużywających najwięcej CPU, posortowanych malejąco.

image.png

ps aux --sort=-%mem | head -20

Wyświetla 20 procesów zużywających najwięcej pamięci RAM.

image.png

ps aux --sort=-vsz

Sortuje po wirtualnym rozmiarze pamięci.

image.png

ps aux | wc -l

Liczy całkowitą liczbę procesów w systemie.

image.png

Monitorowanie procesów hiearchy – relacje między procesami

ps auxf

Wyświetla procesy w formie drzewa, pokazując które procesy są "dziećmi" innych procesów.

pstree -p user

Pokazuje drzewo procesów danego użytkownika z PID.

Monitorowanie procesów w czasie – status i sygnały

ps aux | grep -E 'S|Ss|R|T'

Statusy procesów: S (sleeping – uśpiony), Ss (session leader), R (running – działający), T (stopped – zatrzymany), Z (zombie).

Zombie procesy – problem w naszych czatach:

ps aux | grep Z

Wyszukuje procesy zombie (znane z naszych dzienników z serwera MT2SRV, gdzie czasami pojawiały się procesy nieusunięte prawidłowo).

Wyświetlanie konkretnych kolumn

ps -o pid,user,%cpu,%mem,comm

Wyświetla tylko wybrane kolumny: PID, użytkownik, CPU, pamięć i nazwa polecenia.

ps aux -o pid,ppid,user,comm

PID, PPID (proces nadrzędny), użytkownik i nazwa polecenia – przydatne do zrozumienia zależności między procesami.

Monitorowanie procesów w pętli rzeczywistej – ale nie programem top

while true; do ps aux | grep game; sleep 2; done

Monitoruje konkretny proces co 2 sekundy. Przydatne gdy chcemy obserwować czy proces się restartuje.

Specjalistyczne zapytania

ps aux | awk '$3 > 10 { print $0 }'

Wyświetla procesy zużywające więcej niż 10% CPU.

ps aux | awk '$4 > 20 { print $2, $4, $11 }'

Wyświetla procesy zużywające więcej niż 20% pamięci (PID, %MEM, komenda).

Praktyczne scenariusze

# Sprawdzenie stanu serwera gry MT2SRV
ps aux | grep -E 'game|db|auth'

Szukamy trzech kluczowych procesów serwera.

# Znalezienie procesu zużywającego zasoby
ps aux --sort=-%mem | head -1

Proces zużywający największą pamięci.

# Znalezienie i zabicie zombie procesów
ps aux | grep Z | awk '{print $2}' | xargs kill -9

Ostrożnie! Usuwa procesy zombie (choć powinny być usunięte automatycznie).