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
.