Jak zabít procesy pomocí Linuxu

Občas se nějaký program zasekne, v takovém případě potřebujete metodu, jak jej zabít. Linux nabízí několik přístupů pro vynucené ukončení programů ze shellu.

Jak používat příkaz 'killall'

The zabít všechny příkaz zabije všechny procesy podle názvu. To znamená, že pokud máte spuštěny tři verze stejného programu, příkaz killall všechny tři zabije.

Otevřete například malý program, jako je prohlížeč obrázků. Nyní otevřete další kopii stejného prohlížeče obrázků. Tento příklad používá Xviewer, což je klon Oko Gnome.

Otevřete terminál a zadejte následující příkaz:

killall xviewer

Obě instance programu se zavřou.

Zabijte přesný proces

Příkaz killall může způsobit podivné výsledky. Pokud máte název příkazu delší než 15 znaků, příkaz killall funguje pouze na prvních 15 znacích. Pokud tedy máte dva programy, které sdílejí stejných prvních 15 znaků, oba programy se zruší, i když jste chtěli zabít pouze jeden.

Chcete-li to obejít, můžete zadat následující přepínač, který zabíjí pouze soubory odpovídající přesnému názvu.

killall -e

Ignorovat případ při zabíjení programů

Chcete-li se ujistit, že příkaz killall ignoruje malá a velká písmena v názvu programu, který zadáte, použijte následující příkaz:

killall -I
killall --ignore-case

Zabijte všechny programy ve stejné skupině

Když spustíte příkaz, jako je následující, vytvoří dva procesy:

ps -ef | méně

Jeden příkaz je pro ps -ef část, která uvádí všechny běžící procesy ve vašem systému a výstup je přesměrován do méně velení. Oba programy patří do stejné skupiny, což je bash.

Chcete-li ukončit oba programy najednou, spusťte následující příkaz:

killall -g

Chcete-li například zabít všechny příkazy spuštěné v bash shellu, spusťte následující:

killall -g bash

Chcete-li zobrazit seznam všech běžících skupin, spusťte následující příkaz:

ps -g

Získejte potvrzení před zabíjením programů

Je zřejmé, že příkaz killall je mocný příkaz a nechcete náhodou zabít nesprávné procesy.

Když použijete následující přepínač, budete před ukončením každého procesu dotázáni, zda jste si jisti.

killall -i

Zabijte procesy, které běžely určitou dobu

Představte si, že máte spuštěný program, který trvá mnohem déle, než jste doufali.

Příkaz můžete zabít následujícím způsobem:

killall -o h4

The h ve výše uvedeném příkazu znamená hodiny – tento příkaz ukončí procesy běžící po dobu čtyř hodin nebo déle.

Zadejte některý z následujících časových milníků:

  • s: sekund
  • m: minut
  • h: hodiny
  • d: dny
  • w: týdny
  • M: měsíce
  • y: roky

Případně, chcete-li ukončit příkazy, které se teprve spustily, použijte následující přepínač:

killall -y h4

Tentokrát příkaz killall ukončí všechny programy spuštěné po dobu kratší než 4 hodiny.

Neříkej mi, když proces není zabit

Ve výchozím nastavení, pokud se pokusíte ukončit program, který není spuštěn, zobrazí se následující chyba:

název programu: nenalezen žádný proces

Pokud nechcete, aby vám bylo sděleno, že proces nebyl nalezen, použijte následující příkaz:

killall -q

Použití regulárních výrazů

Namísto zadání názvu programu nebo příkazu zadejte regulární výraz, aby byly všechny procesy, které odpovídají regulárnímu výrazu, uzavřeny příkazem killall.

Chcete-li použít regulární výraz, použijte následující příkaz:

killall -r 

Ukončení programů pro konkrétního uživatele

Chcete-li zabít program vlastněný konkrétním uživatelem, použijte -u přepínač:

killall -u 

Chcete-li ukončit všechny procesy tohoto uživatele, vynechejte název programu.

Počkejte, až killall skončí

Ve výchozím nastavení se killall vrátí do terminálu, když jej spustíte, ale můžete vynutit killall, aby počkal, dokud nebudou ukončeny všechny zadané procesy, než se vrátíte do okna terminálu.

Spusťte následující příkaz:

killall -w

Pokud program nikdy nezemře, pak killall bude také nadále žít.