pstree

Wyświetla procesy w formie drzewa zależności rodzic-dziecko.

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ę do systemd).
  • -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ę do kill.
  • pstree -ap 1 — pełne drzewo od systemd z 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.