Znam się na kill
dowodzeniu i przez większość czasu po prostu używamy kill -9 do silnego zabicia procesu, istnieje wiele innych sygnałów, z których można korzystać kill
. Zastanawiam się jednak, jakie są przypadki użycia pkill
i killall
czy istnieje już polecenie zabicia.
Czy pkill
i killall
używać kill
polecenia w ich implementacji? Mam na myśli, że są tylko opakowaniami kill
lub mają własną implementację?
Chciałbym również wiedzieć, w jaki sposób pgrep
polecenie pobiera identyfikator procesu z nazwy procesu.
Czy wszystkie te polecenia używają tych samych podstawowych wywołań systemowych? Czy jest jakaś różnica z punktu widzenia wydajności, która jest szybsza?
linux
bash
shell-script
kill
Ijaz Ahmad Khan
źródło
źródło
kill -9
domyślnie? -15 (proszę przestań) i -1 (modem się rozłączył, CZYSTO zamknij się) są o wiele bardziej uprzejmi. Po drugie. Uwaga na używanie killall na polach innych niż Linux. Może zachowywać się inaczej. (Np. Na solaris zabija wszystko. NIE FILTROWANE według nazw procesów).Odpowiedzi:
kill
Komenda jest bardzo prosty wrapper dokill
wywołania systemowego , który zna tylko identyfikatory procesów (PID).pkill
ikillall
są również opakowaniami dokill
wywołania systemowego (w rzeczywistości do biblioteki libc, która bezpośrednio wywołuje wywołanie systemowe), ale może określić dla Ciebie PID na podstawie takich rzeczy, jak nazwa procesu, właściciel procesu, identyfikator sesji itp.Jak
pkill
i jakkillall
można pracować przy użyciultrace
lubstrace
na nich. W systemie Linux oboje czytają/proc
system plików i dla każdego znalezionego pid (katalogu) przemierzają ścieżkę w celu zidentyfikowania procesu na podstawie jego nazwy lub innych atrybutów. Sposób ten jest technicznie rzecz biorąc specyficzny dla jądra i systemu. Zasadniczo czytają, z/proc/<PID>/stat
których zawiera nazwę polecenia jako drugie pole. Zapkill -f
ipgrep
sprawdź/cmdline
wpis dla każdego wpisu proc PID.pkill
ipgrep
użyjreadproc
wywołania systemowego, podczaskillall
gdy nie. Nie mogę powiedzieć, czy jest jakaś różnica w wydajności: będziesz musiał to zrobić samodzielnie.źródło
kill i killall to narzędzia, które umożliwiają zabicie procesu. Pierwszy według PID, drugi według nazwy. pgrep (lista) i pkill (domyślnie zabijaj) to narzędzia, które umożliwiają wysyłanie wiadomości do procesu po nazwie lub innych atrybutach: http://linux.die.net/man/1/pkill Więcej informacji o sygnały: http://linux.die.net/man/7/signal
źródło
killall
używa się go do zabicia procesu według jego nazwy? i używa do tego celu pgrep? akillall
także zabija wszystkie procesy potomne,? jakiego sygnałukillall
używa domyślnie?killall
zabije wszystkie procesy, które masz prawo zabić, więc jeśli jesteś rootem, skutecznie zrestartujesz serwer.killall chromium
zabije proces chromu,pgrep chromium
da ci listę PID,pkill chromium
zabije chrom. killall wysyła sygnał przez domyślny SIGTERM (jak pkill)