Úvod
Pokud proces Linuxu přestane reagovat nebo spotřebovává příliš mnoho zdrojů, možná ho budete muset zabít.
Většina procesů má své vlastní metody vypínání. Bohužel procesy mohou selhat a nedovolit, aby byly vypnuty. Pokud běžící proces na pozadí nereaguje, je nutné použít příkaz k jeho ukončení.
Zde je kompletní průvodce, jak zabítproces Linuxu pomocí příkazového řádku.
Jaké procesy můžete v Linuxu zabít?
Před zabitím nebo ukončením procesu musíte zvážit oprávnění.
Uživatel root může zabít všechny procesy. Můžete buď přidat sudo
před příkaz, abyste jej spustili jako root, nebo získejte root shell pomocí su
. Poté spusťte příkaz.
Zabitím procesu se danému procesu odešle zpráva o ukončení. Existuje několik typů ukončovacích zpráv včetně:
SIGKILL
– SIGKILL je konečný způsob, jak zabít proces. Vždy to zabije proces a zabije proces náhle, což způsobí fatální chybu. SIGKILL by měl vždy fungovat. Pokud to nefunguje, došlo k selhání operačního systému.SIGTERM
– SIGTERM se pokouší zabít proces, ale na rozdíl od SIGKILL může být zablokován nebo jinak zpracován. Lze to považovat za jemnější způsob pokusu o ukončení procesu.
Pro většinu účelů SIGKILL
bude nejrychlejší a nejúčinnější metodou ukončení procesu.
Krok 1:Zobrazení běžících procesů Linuxu
top
příkaz je nejjednodušší způsob, jak získat úplný přehled o aktuálně spuštěných procesech.
Chcete-li zobrazit seznam všech aktuálně spuštěných procesů, použijte příkaz:
top
Příkaz top odhalí ID procesů a uživatele, kromě množství paměti a výkonu procesoru každý proces.
Chcete-li zabít procesy přímo shora rozhraní, stiskněte k a zadejte ID procesu.
Chcete-li opustit nahoře rozhraní, stiskněte q .
Krok 2:Najděte proces, který chcete zabít
Než budete moci zabít proces, musíte ho najít. Existuje několik způsobů, jak můžete hledat proces v Linuxu. Procesy mohou být umístěny buď podle názvu procesu (nebo jeho částečného názvu) nebo podle ID procesu (také známého jako „pid“).
Vyhledejte proces pomocí příkazu ps
ps
zobrazí podobné informace jako top
, i když to nebude ve formě rozhraní. Místo toho ps
poskytuje úplný seznam běžících procesů, formátovaný na základě značek, které přidáte.
ps <options>
Nejběžnější možnosti, které k tomu lze přidat, je „-aux“:
-a
. Zobrazte procesy všech uživatelů, nikoli pouze aktuálního uživatele.-u
. Poskytněte podrobné informace o každém z procesů-x
. Zahrňte procesy, které nejsou řízeny uživateli, ale démony.
Například příkaz ps -aux
vrátí podrobný seznam procesů všech procesů.
Nalezení PID pomocí pgrep nebo pidof
Linuxový příkaz pgrep
je složitější způsob hledání procesu. Tento příkaz vrátí procesy založené na specifických kritériích výběru, což je známé jako vzor. Vzor je regulární výraz, například a*
, kde * by byl zástupný znak.
pgrep <options> <pattern>
Zde jsou možnosti, které lze s tímto příkazem použít:
-l
. Uveďte názvy procesů i PID.-n
. Vraťte proces, který je nejnovější.-o
. Vraťte proces, který je nejstarší.-u
. Najděte pouze procesy, které patří konkrétnímu uživateli.-x
. Najděte pouze procesy, které přesně odpovídají danému vzoru.
Příkaz pgrep -u root
zobrazí všechny procesy vlastněné rootem. Příkaz pgrep -u root 'a*'
vrací procesy vlastněné rootem, které začínají písmenem „a“.
pidof
příkaz se používá k nalezení ID procesu za předpokladu, že znáte název procesu.
pidof <options> <program>
Může být zahrnuto několik možností, například:
-c
. Vracejte PID pouze v rámci jednoho kořenového adresáře.-o
. Vynechat určité PID (zahrnout procesy, které se mají vynechat za příznakem).-s
. Vraťte pouze jeden PID.-x
. Také vrací PID shellů, které spouštějí skripty.
Krok 3:K ukončení procesu použijte možnosti příkazu Kill
V Linuxu existuje několik různých metod, jak zabít proces, v závislosti na tom, zda znáte název běžícího procesu, pid procesu nebo jak dlouho proces běží.
killall Command
killall
příkaz se používá k ukončení procesů podle názvu. Ve výchozím nastavení bude odesílat signál SIGTERM. killall
příkaz může zabít více procesů jediným příkazem.
killall <process>
S killall
lze použít několik možností příkaz:
-e
. Najděte přesnou shodu s názvem procesu.-I
. Při pokusu o nalezení názvu procesu ignorujte velká a malá písmena.-i
. Při ukončování procesu požádejte o další potvrzení.-u
. Zabíjejte pouze procesy vlastněné konkrétním uživatelem.-v
. Podejte zprávu o tom, zda byl proces úspěšně ukončen.
Kromě zabíjení procesů na základě jména je to killall
příkaz lze také použít k ukončení na základě stáří procesu pomocí následujících příkazů:
-o
. Použijte tento příznak s dobou trvání k ukončení všech procesů, které byly spuštěny déle než uvedenou dobu.-y
. Použijte tento příznak s dobou trvání k ukončení všech procesů, které byly spuštěny méně než uvedenou dobu.
killall -o 15m
příkaz zabije všechny procesy, které jsou starší než 15 minut, zatímco příkaz killall -y 15m
příkaz ukončí všechny procesy, které jsou kratší než 15 minut.
Příkaz pkill
pkill
příkaz je podobný pgrep
příkaz v tom, že zabije proces založený na názvu procesu, kromě dalších kvalifikačních faktorů. Ve výchozím nastavení pkill
odešle signál SIGTERM.
pkill <options> <pattern>
možnosti pkill zahrnují:
-n
. Zabíjejte pouze nejnovější z objevených procesů.-o
. Zabijte pouze nejstarší z objevených procesů.-u
. Zabijte pouze procesy, které vlastní vybraný uživatel.-x
. Zabijte pouze procesy, které přesně odpovídají vzoru.-signal
. Vyšlete do procesu konkrétní signál, nikoli SIGTERM.
kill Command
Pokud znáte ID procesu, můžete jej zabít příkazem:
kill <processID>
kill
příkaz zabije jeden proces najednou s daným ID procesu. Odešle SIGTERM signál signalizující zastavení procesu. Čeká, až program spustí rutinu vypnutí.
-signal
příkaz lze použít k určení signálu, který není SIGTERM.
kill -9 Linux Command
kill -9
je užitečný příkaz, když potřebujete vypnout nereagující službu. Spusťte jej podobně jako běžný kill
příkaz:
kill -9 <processID>
Nebo
kill -SIGKILL <processID>
kill -9
příkaz odešle SIGKILL signál oznamující službě, aby se okamžitě zastavila. Nereagující program bude kill
ignorovat příkaz, ale vypne se vždy, když kill -9
je vydán příkaz. Tento příkaz používejte opatrně. Obchází standardní vypínací rutinu, takže všechna neuložená data budou ztracena.
Váš operační systém nefunguje správně, pokud signál SIGKILL neukončí službu.
horní příkaz
top
poskytuje rozhraní, jehož prostřednictvím může uživatel procházet aktuálně běžícími procesy.
top
Chcete-li ukončit konkrétní proces, vložte k
z horního rozhraní a poté zadejte požadované ID procesu.
příkaz xkill
xkill
příkaz je speciální typ příkazu, který uzavře spojení daného serveru s klienty.
xkill <resource>
Pokud server otevřel řadu nežádoucích procesů, xkill
přeruší tyto procesy.
Pokud xkill
spustíte bez zadání zdroje, otevře se rozhraní, které uživateli umožní vybrat okno, které se má zavřít.
Klíčové poznatky o ukončení procesu Linux
- Pokud proces nelze zavřít jiným způsobem, lze jej ručně ukončit pomocí příkazového řádku.
- Chcete-li ukončit proces v Linuxu, musíte proces nejprve najít. Můžete použít
top
,ps
,pidof
nebopgrep
příkazy. - Jakmile najdete proces, který chcete zabít, můžete ho zabít pomocí
killall
,pkill
,killall
,xkill
nebotop
příkazy. - Při zabíjení procesu můžete odeslat ukončovací signál SIGHUP, SIGKILL nebo SIGTERM.
- Potřebujete mít oprávnění k ukončení procesu, které můžete získat pomocí
sudo
příkaz.