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.
ps(1),
regex(7),
signal(7),
sigqueue(3),
killall(1),
skill(1),
kill(1),
kill(2),
cgroups(8)
Kjetil Torgrim Homme
Zgłoszenia błędów prosimy wysyłać na
adres
[email protected]