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ř.
-1nebo-s 1). - Použití předpony „SIG“ (např.
-SIGHUPnebo-s SIGHUP). - Bez předpony „SIG“ (např.
-HUPnebo-s HUP).
Následující příkazy jsou si navzájem ekvivalentní:
kill -1 PID_NUMBERkill -SIGHUP PID_NUMBERkill -HUP PID_NUMBER
PID poskytnuté kill příkaz může být jeden z následujících:
- Pokud
PIDje větší než nula, signál je odeslán procesu s ID rovnýmPID. - Pokud
PIDje 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ý vyvolalkillpříkaz. Použijteps -efjpříkaz k zobrazení ID skupin procesů (GID). - Pokud
PIDje 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 akillsamotný proces. - Pokud
PIDje 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ář.