Když se proces chová nesprávně, můžete ho někdy chtít ukončit nebo zabít. V tomto příspěvku prozkoumáme několik způsobů, jak ukončit proces nebo aplikaci z příkazového řádku i z grafického rozhraní pomocí gedit jako ukázkové aplikace.
Použití příkazového řádku/ukončovacích znaků
Ctrl + C
Jeden problém s vyvoláním gedit z příkazového řádku (pokud nepoužíváte gedit & ) je, že neuvolní výzvu, takže relace shellu je blokována. V takových případech přijde vhod Ctrl+C (klávesa Control v kombinaci s 'C'). Tím se ukončí gedit a veškerá práce bude ztracena (pokud soubor nebyl uložen). Ctrl+C odešle SIGINT signál do gedit . Toto je signál zastavení, jehož výchozí akcí je ukončení procesu. Instruuje shell, aby zastavil gedit a vraťte se do hlavní smyčky a dostanete výzvu zpět.
$ gedit
^C
Ctrl + Z
Říká se tomu suspendovací znak . Odešle SIGTSTP signál ke zpracování. Toto je také signál zastavení, ale výchozí akcí není zabít, ale pozastavit proces.
Zastaví (zabije/ukončí) gedit a vraťte příkazový řádek.
$ gedit
^Z
[1]+ Stopped gedit
$
Jakmile je proces pozastaven (v tomto případě gedit ), v gedit není možné nic psát ani dělat . Na pozadí se proces stává úkolem . To lze ověřit pomocí jobs příkaz.
$ jobs
[1]+ Stopped gedit
jobs umožňuje řídit více procesů v rámci jedné relace shellu. Úlohy můžete podle potřeby zastavit, obnovit a přesunout na pozadí nebo do popředí.
Pokračujme v gedit na pozadí a uvolněte výzvu ke spuštění dalších příkazů. Můžete to udělat pomocí bg příkaz, za kterým následuje ID úlohy (všimněte si [1] z výstupu jobs výše. [1] je ID úlohy).
$ bg 1
[1]+ gedit &
Je to podobné, jako když spustíte gedit pomocí &, :
$ gedit & Pomocí zabít
kill umožňuje jemné ovládání signálů a umožňuje vám signalizovat proces zadáním názvu signálu nebo čísla signálu, za kterým následuje ID procesu nebo PID.
Co se mi líbí na kill je, že může pracovat také s ID úloh. Začněme gedit na pozadí pomocí gedit & . Za předpokladu, že mám ID úlohy gedit z jobs příkaz, odešleme SIGINT do gedit :
$ kill -s SIGINT %1
Všimněte si, že před ID úlohy by mělo být % nebo kill bude to považovat za PID.
kill může fungovat bez explicitního zadání signálu. V takovém případě je výchozí akcí odeslání SIGTERM , která proces ukončí. Proveďte kill -l vypsat všechny názvy signálů a použít man kill příkaz k přečtení manuálové stránky.
Pomocí killall
Pokud nechcete zadat ID úlohy nebo PID, killall umožňuje specifikovat proces podle názvu. Nejjednodušší způsob, jak ukončit gedit pomocí killall je:
$ killall gedit
Tím se zabijí všechny procesy s názvem gedit . Jako kill , výchozí signál je SIGTERM . Má možnost ignorovat velká a malá písmena pomocí -I :
$ gedit &
[1] 14852
$ killall -I GEDIT
[1]+ Terminated gedit
Chcete-li se dozvědět více o různých příznacích poskytovaných killall (například -u , která vám umožňuje zabíjet procesy vlastněné uživateli) zkontrolujte manuálovou stránku (man killall )
Pomocí xkill
Setkali jste se někdy s problémem, kdy přehrávač médií, jako je VLC, zešedl nebo se zastavil? Nyní můžete najít PID a ukončit aplikaci pomocí jednoho z výše uvedených příkazů nebo použít xkill .

xkill umožňuje zabít okno pomocí myši. Jednoduše spusťte xkill v terminálu, který by měl změnit kurzor myši na x nebo malá ikona lebky. Klikněte na x na okně, které chcete zavřít. Při používání xkill buďte opatrní , ačkoli — jak vysvětluje jeho manuálová stránka, může to být nebezpečné. Byli jste varováni!
Další informace naleznete v manuálové stránce každého příkazu. Můžete také prozkoumat příkazy jako pkill a pgrep .