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ślnieSIGTERM, proces może posprzątać i wyjść.kill -9 4823— wysyłaSIGKILL, 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.