pgrep, pkill, pidwait - wyszukiwanie, wysyłanie
sygnałów lub oczekiwanie na procesy na podstawie nazwy i
innych atrybutów
pgrep [opcje] wzorzec
pkill [opcje] wzorzec
pidwait [opcje] wzorzec
pgrep przeszukuje aktualnie działające
procesy i wypisuje na standardowym wyjściu identyfikatory
procesów, które pasują do wybranych kryteriów.
Wszystkie kryteria muszą pasować. Na przykład:
- $ pgrep -u root sshd
wypisze tylko listę procesów o nazwie sshd
ORAZ będących własnością roota. Z
drugiej strony:
- $ pgrep -u root,daemon
wypisze procesy, których właścicielem jest
root LUB daemon.
pkill zamiast wypisywania procesów wyśle do
każdego podany sygnał (domyślnie SIGTERM).
pidwait zamiast wypisywania procesów oczekuje na
nie.
- -sygnał
- --signal
sygnał
- Określenie sygnału, jaki ma być wysłany do
wszystkich pasujących procesów. Może być
numerem lub nazwą sygnału. (tylko pkill)
- -c, --count
- Pominięcie zwykłego wyjścia; zamiast niego wypisanie
liczby pasujących procesów. Jeśli nic nie zostanie
policzone (np. liczba będzie zerem), polecenie zwróci
wartość niezerową. Uwaga: w przypadku pkill i pidwait
zwracana wartość to liczba pasujących
procesów, a nie procesów, do których udało
się dostarczyć sygnał lub zaczekać na
zakończenie.
- -d, --delimiter
separator
- Ustawienie łańcucha oddzielającego identyfikatory
procesów na wyjściu (domyślnie nowa linia). (tylko
pgrep)
- -e, --echo
- Wyświetlanie nazw oraz identyfikatorów zabijanych
procesów (tylko pkill).
- -f, --full
- wzorzec normalnie jest dopasowywany tylko do nazwy procesu. Z
ustawioną opcją -f, wykorzystywana jest cała
linia poleceń.
- -g, --pgroup
pgrp,...
- Dopasowanie tylko do procesów z grup o podanych identyfikatorach.
Grupa procesów 0 jest tłumaczona na własną
grupę procesów polecenia pgrep, pkill lub
pidwait.
- -G, --group
gid,...
- Dopasowanie tylko do procesów o podanych identyfikatorach grup
rzeczywistych. Można użyć wartości liczbowych
lub symbolicznych.
- -e,
--ignore-case
- Dopasowywanie procesów bez rozróżniania
wielkości liter.
- -l,
--list-name
- Wypisanie nazw oraz identyfikatorów procesów. (tylko
pgrep)
- -a,
--list-full
- Wypisanie pełnych linii poleceń oraz identyfikatorów
procesów. (tylko pgrep)
- -n, --newest
- Wybór tylko najnowszych (najpóźniej uruchomionych)
spośród pasujących procesów.
- -o, --oldest
- Wybór tylko najstarszych (najwcześniej uruchomionych)
spośród pasujących procesów.
- -O, --older
sekundy
- Wybór procesów starszych niż podana liczba
sekund.
- -P, --parent
ppid,...
- Dopasowanie tylko do procesów o wymienionych identyfikatorach
procesów rodziców.
- -s, --session
sid,...
- Dopasowanie tylko do procesów o wymienionych identyfikatorach sesji
procesów. Identyfikator sesji 0 jest tłumaczony na
własny procesu pgrep, pkill lub pidwait.
- -t, --terminal
term,...
- Dopasowanie tylko do procesów o wymienionych terminalach
sterujących. Nazwa terminala powinna być podana bez
przedrostka "/dev/".
- -u, --euid
euid,...
- Dopasowanie tylko do procesów o wymienionych identyfikatorach
użytkowników efektywnych. Można użyć
wartości liczbowych lub symbolicznych.
- -U, --uid
uid,...
- Dopasowanie tylko do procesów o wymienionych identyfikatorach
użytkowników rzeczywistych. Można użyć
wartości liczbowych lub symbolicznych.
- -v, --inverse
- Negacja dopasowania. Zwykle używana w kontekście programu
pgrep lub pidwait. W kontekście pkill
krótka opcja jest wyłączona, aby zapobiec
przypadkowemu użyciu.
- -w,
--lightweight
- Wyświetlenie wszystkich identyfikatorów wątków
zamiast pidów w kontekście programu pgrep lub
pidwait. W kontekście pkill ta opcja jest
wyłączona.
- -x, --exact
- Dopasowanie tylko do procesów, których nazwy (lub linie
poleceń, jeśli podano opcję -f) pasują
dokładnie do wzorca.
- -F, --pidfile
plik
- Odczyt PIDów z pliku. Ta opcja jest bardziej
przydatna dla programu pkill lub pidwait niż
pgrep.
- -L,
--logpidfile
- Niepowodzenie, jeśli plik PID (p. opcja -F) nie jest
zablokowany.
- -r, --runstates
D,R,S,Z,...
- Dopasowanie tylko do procesów o pasującym stanie.
- -e,
--ignore-ancestors
- Ignorowanie wszystkich przodków pgrep, pkill i
pidwait. Może to być przydatne np. przy podnoszeniu
uprawnień przez sudo lub podobne narzędzia.
- --cgroup
nazwa,...
- Dopasowanie po przekazanej nazwie grupy kontrolnej (cgroup) v2. P.
cgroups(8)
- --ns pid
- Dopasowanie do procesów należących do tych samych
przestrzeni nazw. Wymagane w przypadku uruchamiania przez roota, aby
dopasować do procesów innych użytkowników.
Więcej o ograniczaniu dopasowywanych przestrzeni nazw przy opcji
--nslist.
- --nslist
nazwa,...
- Dopasowanie tylko do podanych przestrzeni nazw. Dostępne
przestrzenie: ipc, mnt, net, pid, user, uts.
- -q, --queue
wartość
- Użycie sigqueue(3) zamiast kill(2), a argument
będący wartością określa liczbę
całkowitą do wysłania wraz z sygnałem.
Jeśli proces odbierający ma zainstalowaną
procedurę obsługi dla tego sygnału przy użyciu
flagi SA_SIGINFO wywołania sigaction(2), może
następnie odebrać te dane w poli si_value struktury
siginfo_t.
- -V, --version
- Wyświetlenie informacji o wersji i zakończenie.
- -h, --help
- Wyświetlenie opisu i zakończenie.
- wzorzec
- Określenie rozszerzonego wyrażenia regularnego do
dopasowania nazwy procesu lub linii poleceń.
Przykład 1: znalezienie identyfikatora procesu demona
named:
- $ pgrep -u root named
Przykład 2: wymuszenie ponownego odczytu pliku
konfiguracyjnego przez program syslog:
- $ pkill -HUP syslogd
Przykład 3: podanie szczegółowych informacji
o wszystkich procesach xterm:
- $ ps -fp $(pgrep -d, -x xterm)
Przykład 4: zwiększenie nice wszystkich
procesów chrome:
- $ renice +4 $(pgrep chrome)
- 0
- Jeden lub więcej procesów pasowało do
warunków. W przypadku pkill i pidwait, musi udać się
wysłać sygnał lub zaczekać na przynajmniej
jeden proces.
- 1
- Brak procesów pasujących do warunków lub do
żadnego nie udało się wysłać
sygnału.
- 2
- Błąd składni w linii poleceń.
- 3
- Błąd krytyczny: brak pamięci itp.
Nazwa procesu używana przy dopasowaniu jest ograniczona do
15 znaków obecnych w wyjściu /proc/pid/stat. Aby
dopasować do pełnej linii poleceń
(/proc/pid/cmdline), należy użyć opcji
-f. Wątki mogą nie mieć tej samej nazwy procesu
jako rodzica, ale będą miały tę samą
linię poleceń.
Działający proces pgrep, pkill ani
pidwait nigdy nie zgłosi siebie jako dopasowania.
Opcja -O --older cicho się nie powiedzie,
jeśli /proc jest zamontowany z opcją subset=pid.
Opcji -n, -o oraz -v nie można
łączyć. Gdyby było to przydatne, proszę
zawiadomić autora.
Zgłoszono procesy nie funkcjonujące.
pidwait wymaga wywołania systemowego
pidfd_open(2), które pojawiło się w Linuksie
5.3.