pstree pokazuje uruchomione procesy w postaci drzewa, w którym widać, kto kogo uruchomił — relację rodzic-dziecko. Tam, gdzie ps wypluwa płaską listę PID-ów, pstree od razu odpowiada na pytanie „dlaczego ten proces w ogóle działa i z czego wyrósł”. Domyślnie startuje od PID 1 (init/systemd), a identyczne gałęzie skleja w jedną z licznikiem, np. 5*[bash], żeby nie zaśmiecać widoku. To narzędzie z pakietu psmisc, świetne do szybkiej diagnozy „co odpaliło tego zombie” albo „ile workerów ma mój serwer”.
Składnia i najważniejsze opcje
Podstawowa forma: pstree [opcje] [PID|użytkownik]
-p— pokazuje PID-y w nawiasach przy każdym procesie (wyłącza sklejanie identycznych gałęzi).-a— dokleja argumenty wiersza poleceń, więc widzisz, z jakimi flagami coś ruszyło.-s— wyświetla procesy nadrzędne wskazanego PID-u (cała ścieżka w górę dosystemd).-u— zaznacza zmiany UID — kiedy proces dziecko działa na innym użytkowniku niż rodzic.-n— sortuje procesy o tym samym rodzicu po PID, a nie po nazwie.-h— podświetla bieżący proces i jego przodków (jeśli terminal to wspiera).-T— ukrywa wątki, zostawiając same procesy (mniej szumu przy aplikacjach wielowątkowych).-g— dokłada PGID (identyfikatory grup procesów).
Przykłady użycia
pstree— rysuje całe drzewo procesów systemu od korzenia w dół.pstree -p— to samo, ale z PID-ami przy każdej nazwie; idealne, gdy szykujesz się dokill.pstree -ap 1— pełne drzewo odsystemdz argumentami i PID-ami, czyli komplet „co i czym jest odpalone”.pstree -s 4242— pokazuje, jacy rodzice doprowadzili do powstania procesu o PID 4242 (przydatne przy polowaniu na osierocone procesy).pstree pawel— ogranicza drzewo do procesów należących do użytkownika pawel.
Częste błędy i pułapki
Najczęstsza wpadka: pstree nie należy do pakietu procps, tylko do psmisc — na odchudzonych obrazach Dockera albo minimalnych instalkach może go po prostu nie być (apt install psmisc lub dnf install psmisc). Pamiętaj też, że to migawka — drzewo nie odświeża się na żywo, więc krótko żyjący proces zniknie między dwoma wywołaniami. Na macOS i BSD składnia oraz flagi bywają inne (to osobna implementacja, nie ta z psmisc), więc nie przenoś nawyków z Linuksa w ciemno. I drobiazg, który myli juniorów: domyślne sklejanie identycznych gałęzi (5*[nginx]) to nie błąd — dodaj -p albo -c, żeby je rozbić.
Powiązane komendy: ps, top, htop, pgrep, kill.