Někdy při práci na počítači se systémem Linux uvidíte, že se aplikace nebo proces příkazového řádku zasekne (přestane reagovat). Pak je v těchto případech jediným východiskem jeho ukončení. Příkazový řádek Linuxu nabízí nástroj, který můžete v těchto scénářích použít. Říká se tomu zabít .
V tomto tutoriálu probereme základy zabíjení pomocí několika snadno srozumitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny příklady v článku byly testovány na počítači Ubuntu 16.04.
Příkaz zabití Linuxu
Příkaz kill se obvykle používá k ukončení procesu. Interně vysílá signál a v závislosti na tom, co chcete dělat, existují různé signály, které můžete pomocí tohoto nástroje odeslat. Následuje syntaxe příkazu:
kill [options] <pid> [...]
A zde je návod, jak to popisuje manuálová stránka nástroje:
The default signal for kill is TERM. Use -l or -L to list available signals. Particularly useful
signals include HUP, INT, KILL, STOP, CONT, and 0. Alternate signals may be specified in three ways:
-9, -SIGKILL or -KILL. Negative PID values may be used to choose whole process groups; see the PGID
column in ps command output. A PID of -1 is special; it indicates all processes except the kill
process itself and init.
Následující příklady ve stylu otázek a odpovědí by vám měly poskytnout lepší představu o tom, jak funguje příkaz kill.
O1. Jak ukončit proces pomocí příkazu kill?
To je velmi snadné – vše, co musíte udělat, je získat PID procesu, který chcete zabít, a poté jej předat příkazu kill.
kill [pid]
Například jsem chtěl zabít proces 'gthumb' v mém systému. Nejprve jsem tedy použil příkaz ps k načtení pid aplikace a poté jej předal příkazu kill, aby jej ukončil. Zde je snímek obrazovky, který to vše ukazuje:
Q2. Jak odeslat vlastní signál?
Jak již bylo zmíněno v úvodní části, TERM je výchozí signál, který kill posílá dotyčné aplikaci/procesu. Pokud však chcete, můžete odeslat jakýkoli jiný signál, který podporuje zabíjení, pomocí -s možnost příkazového řádku.
kill -s [signal] [pid]
Pokud například proces nereaguje na signál TERM (který umožňuje procesu provést konečné vyčištění před ukončením), můžete přejít na signál KILL (který procesu nedovolí provést žádné čištění). Následuje příkaz, který v takovém případě musíte spustit.
kill -s KILL [pid]
O3. Jaké všechny signály můžete vysílat pomocí kill?
Samozřejmě, další logická otázka, která vás napadne, je, jak zjistit, které všechny signály můžete vysílat pomocí kill. Naštěstí existuje možnost příkazového řádku -l který uvádí všechny podporované signály.
kill -l
Následuje výstup výše uvedeného příkazu vytvořeného v našem systému:
Q4. Jaké jsou další způsoby odesílání signálu?
V jednom z předchozích příkladů jsme vám řekli, že pokud chcete poslat signál KILL, můžete to udělat následujícím způsobem:
kill -s KILL [pid]
Existuje však také několik dalších alternativ:
kill -s SIGKILL [pid]
kill -s 9 [pid]
Odpovídající číslo lze zjistit pomocí volby -l, kterou jsme již probrali v předchozím příkladu.
O5. Jak zabít všechny běžící procesy najednou?
V případě, že uživatel chce zabít všechny procesy, které může (závisí to na jeho úrovni oprávnění), pak místo zadávání velkého počtu ID procesů může jednoduše předat volbu -1 k ukončení.
Například:
kill -s KILL -1
Závěr
Příkaz kill je docela jednoduchý na pochopení a použití. Existuje mírná křivka učení, pokud jde o seznam možností signálu, které nabízí, ale jak jsme zde vysvětlili, existuje možnost se na tento seznam také rychle podívat. Procvičte si to, co jsme probrali, a měli byste jít. Pro více informací přejděte na manuálovou stránku nástroje.