Android

Zabijte příkaz v linuxu

Utilitarianism: Crash Course Philosophy #36

Utilitarianism: Crash Course Philosophy #36

Obsah:

Anonim

Linux je skvělý a pokročilý operační systém, ale není dokonalý. Někdy se některé aplikace mohou začít chovat erraticky a přestat reagovat nebo začít 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 buď restartovat systém, nebo zabít proces aplikace.

Existuje několik obslužných programů, které vám umožňují ukončit procesy errant s tím, že kill nejčastěji používané.

kill příkaz

kill je shell zabudovaný do většiny granátů odvozených z Bourne, jako jsou Bash a Zsh. Chování příkazů se mírně liší mezi skořápkami a samostatným spustitelným souborem /bin/kill .

Pomocí příkazu type zobrazíte všechna umístění ve vašem systému obsahující 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 používá se při každém psaní kill . Pokud chcete použít binární, zadejte úplnou cestu k souboru /bin/kill ., použijeme vestavěný bash.

Syntaxe příkazu kill má následující podobu:

kill…

Příkaz kill odešle signál určeným procesům nebo skupinám procesů a způsobí, že budou jednat podle signálu. Není-li signál zadán, je výchozí hodnota -15 (-TERM).

Nejběžně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 volbou -l :

kill -l

Signály lze specifikovat třemi různými způsoby:

  1. Použití čísla (např. -1 nebo -s 1 ) -SIGHUP předpony „SIG“ (např. -SIGHUP nebo -s SIGHUP ). Bez předpony „SIG“ (např. -HUP nebo -s HUP ).

Následující příkazy jsou navzájem rovnocenné:

kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER

PID poskytované k příkazu kill mohou být následující:

  • Pokud je PID větší než nula, je signál odeslán do procesu s ID rovným PID Pokud je PID roven nule, je signál odeslán do všech procesů v aktuální skupině procesů. Jinými slovy, signál je odeslán do všech procesů patřících do GID shellu, který vyvolal příkaz kill . Použijte příkaz ps -efj k zobrazení ID skupiny procesů (GID). Pokud se PID rovná -1 , signál je odeslán do všech procesů se stejným UID jako uživatel vyvolávající příkaz. Pokud je vyvolávajícím uživatelem root, je signál odeslán do všech procesů kromě init a samotného procesu kill Pokud je PID menší než -1 , je signál odeslán do všech procesů ve skupině procesů eq s GID rovnou absolutní hodnotě PID .

Pravidelní uživatelé mohou posílat signály do svých vlastních procesů, ale ne ty, které patří jiným uživatelům, zatímco uživatel root může posílat signály do procesů jiných uživatelů.

Ukončení procesů pomocí příkazu kill

Chcete-li ukončit nebo zabít proces pomocí příkazu kill , musíte nejprve najít ID procesu (PID). To lze provést pomocí různých příkazů, jako jsou top , ps , pidof a pgrep .

Řekněme, že prohlížeč Firefox přestal reagovat a je třeba proces Firefox zabít. Chcete-li najít PID prohlížeče, použijte příkaz pidof :

pidof firefox

Příkaz vytiskne ID všech procesů Firefoxu:

6263 6199 6142 6076

Jakmile znáte čísla procesů, můžete je ukončit vysláním signálu TERM :

kill -9 2551 2514 1963 1856 1771

Místo hledání PID a ukončení procesů můžete výše uvedené příkazy kombinovat do jednoho:

kill -9 $(pidof firefox)

Opětovné načtení procesů pomocí příkazu kill

Dalším běžným případem použití kill je odeslání signálu HUP , který říká procesům, aby znovu načíst jeho nastavení.

Chcete-li například znovu načíst Nginx, musíte do hlavního procesu odeslat signál. ID procesu hlavního procesu Nginx lze nalézt v souboru nginx.pid , který se obvykle nachází v adresáři /var/run .

Pomocí příkazu cat vyhledejte hlavní PID:

cat /var/run/nginx.pid

30251

Jakmile najdete hlavní PID, načtěte znovu nastavení Nginx zadáním:

sudo kill -1 30251

Výše uvedený příkaz musí být spuštěn jako root nebo uživatel s právy sudo.

Závěr

Příkaz kill se používá k odeslání signálu do procesů. Nejčastěji používaný signál je SIGKILL nebo -9 , který ukončí dané procesy.

zabít terminál