pgrep przeszukuje tablicę procesów działających w systemie i wypisuje PID-y tych, które pasują do podanej nazwy lub wzorca. Zamiast bawić się w klasyczne ps aux | grep nazwa (i odfiltrowywać sam proces grep z wyników), dostajesz od razu czyste numery PID, gotowe do podania kolejnym poleceniom. To narzędzie z pakietu procps-ng, obecne praktycznie na każdym Linuksie, i jeden z pierwszych odruchów, gdy chcesz sprawdzić, czy coś chodzi i pod jakim numerem.
Składnia i najważniejsze opcje
Podstawowa forma to pgrep [opcje] wzorzec, gdzie wzorzec domyślnie traktowany jest jako wyrażenie regularne dopasowywane do nazwy procesu.
-l— wypisuje PID razem z nazwą procesu, a nie sam numer.-a— pokazuje PID i pełną linię poleceń (z argumentami).-f— dopasowuje wzorzec do całej linii poleceń, nie tylko do nazwy procesu.-u uid— ogranicza wyniki do procesów danego użytkownika (efektywny UID).-x— wymaga dokładnego dopasowania nazwy, bez fragmentów.-n/-o— zwraca tylko najnowszy (-n) lub najstarszy (-o) pasujący proces.-c— zamiast listy PID-ów wypisuje samą liczbę dopasowań.-i— ignoruje wielkość liter we wzorcu i nazwach procesów.
Przykłady użycia
pgrep nginx— wypisuje PID-y wszystkich procesów, których nazwa zawiera „nginx”.pgrep -a ssh— pokazuje PID-y i pełne polecenia procesów związanych z ssh, więc od razu widzisz, kto i z czym się łączy.pgrep -u www-data php-fpm— znajduje procesy php-fpm należące do użytkownika www-data.pgrep -f "manage.py runserver"— dopasowuje po całej linii poleceń, dzięki czemu złapiesz skrypt Pythona, którego nazwa procesu to po prostu „python”.pgrep -c chrome— zwraca liczbę procesów Chrome, idealne do szybkiego sprawdzenia, ile ich się rozmnożyło.
Częste błędy i pułapki
Najczęstsza wpadka: domyślnie pgrep dopasowuje tylko nazwę procesu, a ta jest ucięta do 15 znaków i nie zawiera argumentów. Szukając skryptu uruchomionego przez interpreter (Python, Node, Java), użyj -f, inaczej dostaniesz pustkę albo zły wynik. Pamiętaj też, że wzorzec to regex, nie zwykły tekst — kropki i nawiasy mają znaczenie specjalne.
Druga pułapka to różnice między systemami. Na Linuksie (procps-ng) -a oznacza „wypisz pełną linię poleceń”, ale na macOS i BSD ta sama flaga znaczy „uwzględnij procesy przodków” — łatwo się naciąć, kopiując polecenia między maszynami. Flaga -c (liczenie) również jest specyfiką Linuksa.
I uwaga z gatunku oczywistych: pgrep tylko znajduje, niczego nie zabija. Jeśli chcesz wysłać sygnał, jego bliźniak pkill robi to bezpośrednio — ale wtedy warto najpierw odpalić pgrep z tym samym wzorcem, żeby zobaczyć, co dokładnie poleci do ubicia.
Powiązane komendy: pkill, ps, kill, top, pidof.