PID

Unikalny numer przypisany przez system każdemu działającemu procesowi. Służy do odwoływania się do procesu, np. przy wysyłaniu mu sygnału.

PID (Process Identifier) to unikalny numer, który system operacyjny nadaje każdemu uruchomionemu procesowi. Dzięki niemu jądro (i Ty) wie, do którego dokładnie procesu się odwołać, kiedy chcesz sprawdzić jego stan, zmienić priorytet albo go zatrzymać. PID to liczba całkowita, a w systemach Linux zaczyna się od 1 — ten numer dostaje pierwszy proces startujący po uruchomieniu jądra, czyli init lub systemd.

Jak to działa

Kiedy program zostaje uruchomiony, jądro tworzy nowy proces i przydziela mu kolejny wolny PID. Numery rosną, a po osiągnięciu maksimum (domyślnie 32768 na klasycznym Linuksie, sprawdzisz to w /proc/sys/kernel/pid_max) licznik zawija się i zaczyna szukać wolnych numerów od początku. Dlatego PID nie jest stały „na zawsze” — po zakończeniu procesu jego numer może zostać przydzielony zupełnie innemu programowi później.

PID jest też kluczem do całej hierarchii procesów. Każdy proces ma swojego rodzica, identyfikowanego przez PPID (Parent Process ID). To dlatego kill nie „zabija” niczego fizycznie — po prostu wysyła sygnał do procesu o danym PID, a co ten z sygnałem zrobi, zależy już od niego.

Przykład z praktyki

Załóżmy, że Twój serwer aplikacji się zawiesił i zżera 100% CPU. Najpierw znajdujesz jego PID, np. komendą ps aux | grep node albo pgrep -f myapp. Powiedzmy, że to 4823. Próbujesz grzecznie poprosić proces o zamknięcie sygnałem SIGTERM:

  • kill 4823 — wysyła domyślnie SIGTERM, proces może posprzątać i wyjść.
  • kill -9 4823 — wysyła SIGKILL, czyli „koniec dyskusji”, jądro ubija proces natychmiast.

W narzędziach takich jak htop czy top PID widzisz w pierwszej kolumnie i możesz na nim operować bez wpisywania komend ręcznie.

Częste błędy i mity

Pierwsza pułapka: zakładanie, że kill -9 to zawsze najlepsze wyjście. SIGKILL nie daje procesowi szansy na zamknięcie plików czy zapisanie danych — używaj go dopiero, gdy zwykły kill zawiedzie. Druga: mylenie PID z PPID albo z numerem wątku (TID). Trzecia: trzymanie zapisanego PID przez dłuższy czas i ślepe zaufanie, że wciąż wskazuje ten sam proces — po recyklingu numeru możesz przypadkiem ubić coś zupełnie innego.

Pojęcia powiązane

Warto skojarzyć PID z: PPID (proces rodzica), sygnałami uniksowymi (SIGTERM, SIGKILL, SIGHUP), komendami ps, top, kill i pgrep, procesem init/systemd jako PID 1, oraz katalogiem /proc, gdzie każdy proces ma swój podkatalog nazwany jego numerem.