Linux je skvělý a pokročilý operační systém, ale není dokonalý. Jednou za čas se některé aplikace mohou začít chovat nevyzpytatelně a přestanou reagovat nebo začnou spotřebovávat velké množství systémových prostředků. Nereagující aplikace nelze restartovat, protože původní proces aplikace se nikdy úplně nevypne. Jediným řešením je restartování systému nebo ukončení procesu aplikace.
Existuje několik utilit, které vám umožňují ukončit chybné procesy pomocí kill
nejběžněji používaná bytost.
kill
Příkaz #
kill
je shell vestavěný do většiny shellů odvozených od Bourne, jako jsou Bash a Zsh. Chování příkazu se mezi shelly a samostatným /bin/kill
mírně liší spustitelný.
Použijte type
příkaz k zobrazení všech míst ve vašem systému obsahujících kill
:
type -a kill
kill is a shell builtin
kill is /bin/kill
Výše uvedený výstup říká, že vestavěný shell má prioritu před samostatným spustitelným souborem a je použit vždy, když zadáte kill
. Pokud chcete použít binární soubor, zadejte úplnou cestu k souboru /bin/kill
. V tomto článku použijeme vestavěný Bash.
Syntaxe kill
příkaz má následující tvar:
kill [OPTIONS] [PID]...
kill
příkaz odešle signál určeným procesům nebo skupinám procesů, které způsobí, že budou jednat podle signálu. Pokud není signál specifikován, je výchozí -15
(-TERM).
Nejčastěji používané signály jsou:
1
(HUP
) – Znovu načtěte proces.9
(KILL
) – Zabijte proces.15
(TERM
) – Pěkně zastavte proces.
Chcete-li získat seznam všech dostupných signálů, vyvolejte příkaz s -l
možnost:
kill -l
Signály lze specifikovat třemi různými způsoby:
- Pomocí čísla (např.
-1
nebo-s 1
). - Použití předpony „SIG“ (např.
-SIGHUP
nebo-s SIGHUP
). - Bez předpony „SIG“ (např.
-HUP
nebo-s HUP
).
Následující příkazy jsou si navzájem ekvivalentní:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
PID poskytnuté kill
příkaz může být jeden z následujících:
- Pokud
PID
je větší než nula, signál je odeslán procesu s ID rovnýmPID
. - Pokud
PID
je roven nule, signál je odeslán všem procesům v aktuální skupině procesů. Jinými slovy, signál je odeslán všem procesům patřícím k GID shellu, který vyvolalkill
příkaz. Použijteps -efj
příkaz k zobrazení ID skupin procesů (GID). - Pokud
PID
je rovno-1
, signál je odeslán všem procesům se stejným UID jako uživatel, který příkaz vyvolává. Pokud je vyvolávající uživatel root, je signál odeslán všem procesům kromě init akill
samotný proces. - Pokud
PID
je menší než-1
, signál je odeslán všem procesům ve skupině procesů eq s GID rovným absolutní hodnotěPID
.
Běžní uživatelé mohou posílat signály svým vlastním procesům, ale ne těm, které patří jiným uživatelům, zatímco uživatel root může posílat signály procesům jiných uživatelů.
Ukončení procesů pomocí kill
Příkaz #
Chcete-li ukončit nebo zabít proces pomocí kill
Nejprve musíte najít ID procesu (PID). Můžete to udělat pomocí různých příkazů, jako je top
, ps
, pidof
a pgrep
.
Řekněme, že prohlížeč Firefox přestal reagovat a musíte proces Firefoxu ukončit. Chcete-li najít PID prohlížeče, použijte pidof
příkaz:
pidof firefox
Příkaz vytiskne ID všech procesů Firefoxu:
6263 6199 6142 6076
Jakmile budete znát čísla procesů, můžete je všechny zabít odesláním TERM
signál:
kill -9 6263 6199 6142 6076
Místo hledání PID a následného zabíjení procesů můžete výše uvedené příkazy spojit do jednoho:
kill -9 $(pidof firefox)
Obnovení procesů pomocí kill
Příkaz #
Další častý případ použití pro kill
je odeslat HUP
signál, který říká procesům, aby znovu načetly svá nastavení.
Chcete-li například znovu načíst Nginx, musíte odeslat signál hlavnímu procesu. ID procesu hlavního procesu Nginx lze nalézt v nginx.pid
soubor, který je obvykle umístěn v /var/run
adresář.
Použijte cat
příkaz k nalezení hlavního PID:
cat /var/run/nginx.pid
30251
Jakmile najdete hlavní PID, znovu načtěte nastavení Nginx zadáním:
sudo kill -1 30251
Výše uvedený příkaz musí být spuštěn jako uživatel root nebo uživatel se sudoprivileges.
Závěr č.
kill
příkaz se používá k odeslání signálu procesům. Nejčastěji používaným signálem je SIGKILL
nebo -9
, která dané procesy ukončí.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.