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. 

 

 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). 

 

 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. 

 

 Filtrowanie procesów konkretnego użytkownika 

 ps -u 'nazwa_usera' 

 

 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 

 

 ps aux | grep -v grep 

 

 

 

 

 

 

 

 

 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). 

 

 Sortowanie procesów 

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

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

 

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

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

 

 ps aux --sort=-vsz 

 Sortuje po wirtualnym rozmiarze pamięci. 

 

 ps aux | wc -l 

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

 

 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).