Příkazy A-Z

Jak zabít nebo ukončit proces Linuxu Průvodce Ultimate

Jak zabít nebo ukončit proces Linuxu Průvodce Ultimate

Multiprocesní operační systémy jako Linux a BSD využívají několik metod pro maximalizaci využití CPU. Proces je jednoduše prováděný program. Vzhledem k tomu, že v danou dobu bude spuštěn více než jeden proces Linuxu, je správa procesů v systému Linux nesmírně důležitá. Uživatelé se při spuštění příliš mnoha programů často potýkají s problémy, jako je škrcení prostředků CPU. Situace, jako je tato, se objeví, když CPU nedokáže zvládnout rostoucí počet procesů. I když to úplně nezávisí na výkonu vašeho CPU, může být řešení zablokovaných nebo zombie procesů docela frustrující. Abychom vám tyto případy zmírnili, navrhujeme některé standardní způsoby zabíjení těchto procesů.

Zvládněte nereagující řízení procesů v Linuxu


Dozvíte se několik způsobů, jak ukončit proces Linuxu, který vůbec nereaguje. Pokud přicházíte ze systému Windows, možná jste obeznámeni s Ctrl + Alt + Delete. Podobně uživatelé počítačů Mac mají metodu Command + Option + Escape zabíjení zmrazených procesů. Linux je mnohem univerzálnější než jeho protějšky a nabízí více než jednu metodu řešení mrtvých / nereagujících procesů.

Různé metody zabití mrtvého linuxového procesu


Nastíníme hlavně dvě metody zabíjení zombie procesů. Pro první metodu použijeme terminál Linux. Za tímto účelem budeme nejprve muset identifikovat ID procesu. Po úspěšném získání můžeme tento PID použít k zabití programu odesláním konkrétních signálů na tento PID.

Dozvíte se také, jak provádět takové úlohy zabití Linuxu z grafického uživatelského rozhraní nebo z okna X. Budeme využívat 'Monitor systému' k tomu dostupná aplikace v Ubuntu. Přestože se jedná o aplikaci GNOME, podobné nástroje jsou k dispozici i pro jiná desktopová prostředí Linuxu.

Ukončete nereagující proces z příkazového řádku


Existuje několik nástrojů pro ukončení nereagujícího nebo zablokovaného procesu z příkazového řádku, včetně zabít, pkill, a zabít všechny. Tyto příkazy fungují odesláním konkrétních signálů těmto nereagujícím procesům. Budete potřebovat ID procesu nebo PID informace, abyste jim mohli poslat požadovaný ukončovací signál.

PID nebo ID procesu je jedinečné číslo, které identifikuje proces. Ty jsou vytvářeny jádrem Linuxu za běhu a plánovač procesů řídí jejich aktivity CPU. Kdykoli tedy vyvoláte aplikaci, jádro nejprve vytvoří potřebné procesy a přiřadí jim tyto jedinečné hodnoty PID. S procesem může být spojeno více PID. Každý proces má navíc jeden nadřazený proces s jedinečným PPID (ID nadřazeného procesu).

Pokud tedy zjistíte tento PPID, budete moci poslat signál zabití pomocí programů určených pro tento účel. Níže se naučíte, jak zkontrolovat běžící procesy v systému Linux a identifikovat jejich PPID z terminálu.

Zjistěte informace o PPID


PPID procesu můžete zjistit pomocí několika příkazů pro správu procesů v systému Linux, například pidof, pstree, a pgrep. Pojďme je prozkoumat jeden po druhém a uvidíme, jak získat PID procesu v systému Linux.

Metoda 1: Použití příkazu ps


Příkaz ps v Linuxu zobrazuje všechny spuštěné procesy spolu s dalšími informacemi souvisejícími s procesem, jako je PID v terminálu. Tento příkaz můžeme použít k vypsání všech procesů a následnému odfiltrování konkrétního procesu pomocí příkazů grep systému Linux. Mělo by nám ukázat informace o ID procesu, které nás zajímají.

$ nano> / dev / null &
$ ps aux | grep "nano"

Nejprve jsme vyvolali textový editor Linuxu na pozadí. Poté jsme pomocí příkazu ps společně s příkazem grep zjistili PPID tohoto editoru. Výstup může obsahovat několik ID procesů, ale zajímá nás pouze první, protože to je náš PPID. K vyhledání těchto informací můžeme také použít příkaz Linux awk, jak je ukázáno níže.

$ ps aux | awk '/ nano / print $ 2'

Tento příkaz je flexibilnější, protože potlačuje všechny irelevantní informace. Zobrazí se pouze informace o PPID, které hledáme.

Metoda 2: Použití příkazu pstree


Příkaz pstree nám poskytuje stromový pohled na všechny spuštěné procesy. Poskytuje grafické zobrazení seznamu úloh systému Linux z okna terminálu. Pomocí tohoto příkazu můžete zobrazit PPID i všechny informace PID procesu. Podívejte se na níže uvedené příklady a zjistěte, jak využít pstree k nalezení PPID konkrétního procesu.

$ nano> / dev / null &
$ pstree -p | grep 'nano' $ pstree -p | awk '/ nano / print $ NF'

Nejprve jsme pomocí prvního příkazu vytvořili proces na pozadí. Druhý příkaz poté načte PPID tohoto procesu pomocí příkazu grep v systému Linux. Nakonec třetí příkaz nám ukazuje, jak tuto hodnotu načíst pomocí příkazu awk.

Metoda 3: Použití příkazu pgrep


Příkaz pgrep je jedním z nejjednodušších příkazů pro správu procesů v systému Linux. Zkontroluje seznam všech spuštěných procesů a vytiskne PPID daného procesu na standardním výstupu nebo v našem případě na terminálu. Funguje prováděním shody regexu a je velmi vhodný pro psaní skriptů prostředí Linux.

$ nano> / dev / null &
$ pgrep 'nano'

Vytvořili jsme nano proces podobně jako v předchozích příkladech. Pak jsme získali jeho PPID pomocí příkazu pgrep. Jakmile tuto hodnotu získáme, můžeme velmi snadno provést zabití Linuxu.

Metoda 4: Použití příkazu pidof


Příkaz pidof je další jednoduchý, ale užitečný způsob určení PPID procesu v systému Linux. Zobrazuje PPID i všechny ostatní PID spojené s procesem. Podívejte se na níže uvedené prozkoumat, jak to použít v praxi.

$ nano> / dev / null &
$ pidof nano $ pidof -s nano

Při použití příkazu pidof ke kontrole běžících procesů v systému Linux se často zobrazí více PID. Obvykle je v takových případech první nebo poslední číslo PPID, podle toho, zda jsou ve vzestupném pořadí nebo v sestupném pořadí. Můžete použít -s možnost pidof to zmírnit. Zobrazí pouze hodnotu PPID.

Metoda 5: Použití horního příkazu


Horní příkaz poskytuje v reálném čase pohled na všechny běžící procesy v operačních systémech typu Unix. Tímto způsobem můžete zobrazit seznam úkolů systému Linux ve svém terminálu a zjistit informace PID konkrétního procesu.

$ top

Pomocí následujících příkazů načtěte PPID konkrétního procesu z výstupu hlavního příkazu.

$ nano> / dev / null &
$ top -n1 -b | grep 'nano' $ top -n1 -b | awk '/ nano / print $ 1'

Protože top poskytuje výstup v reálném čase namísto ukládání statických dat do terminálu, použili jsme -n1 a -b možnost tisku statického výstupu. Poté můžete načíst informace PPID pomocí příkazu grep nebo příkazu awk v systému Linux.

Zabijte nereagující proces Linuxu


K získání PPID nereagujícího procesu můžete použít kteroukoli z výše uvedených metod. Jakmile to získáte, je čas proces úplně zabít. Existuje několik příkazů, které nám to umožňují, například zabít, pkill, a zabít všechny. Uvidíme, jak budou pracovat jeden po druhém v následujících částech.

Metoda 1: Použití příkazu kill


Příkaz kill je široce používán administrátory Linuxu kvůli jeho jednoduchosti a robustním akcím. Trvá PID procesu a signál. Jádro na základě tohoto signálu zabije / zastaví provádění procesu. Následující příkaz můžete použít k zobrazení všech dostupných signálů k příkazu kill.

$ kill -l

Jak vidíte, kill nabízí 64 různých signálů. V této příručce však probereme pouze dva z nich. Jedná se o signál 9 (SIGKILL) a signál 15 (SIGTERM). SIGTERM nebo signál 15 je bezpečná metoda zabití nereagujícího procesu. SIGKILL nebo signál 9, na druhé straně, síla zabije proces Linuxu.

$ kill -9 8631 $ kill -KILL 8631

Výše uvedené příkazy jsou ekvivalentní a vynutí vyřazení procesu, který má PID 8631. To je PPID procesu „nano“ v mém systému. Vyměňte to za PID nereagujícího procesu ve vašem systému.

$ kill -15 8631 $ kill -TERM 8631

Výše uvedené příkazy jsou také ekvivalentní a řádně zabijí proces. Proto může nějakou dobu trvat, než bude proces zabit. Možná budete muset připojit sudo před příkazem kill, pokud je proces vlastněn jiným uživatelem.

Metoda 2: Použití příkazu pkill


Příkaz pkill je jedním z nejvšestrannějších příkazů pro správu procesů v Linuxu. Umožňuje nám zabít nereagující proces na základě jeho jména, PID, vlastníka a dalších běhových atributů. Je to dokonalý nástroj pro začínající uživatele nebo lidi, kteří neznají mnoho standardních příkazů terminálu.

$ pkill nano $ pkill 8631 $ pkill -e nano $ pkill -f nano

K zabití zombie / nereagujícího procesu v Linuxu můžete použít kterýkoli z výše uvedených příkazů pkill. Použijte -E Pokud chcete potvrdit úlohu zabití systému Linux. Příkaz pkill také umožňuje uživatelům posílat specifické ukončovací signály.

Metoda 3: Použití příkazu killall


Příkaz killall umožňuje uživatelům zabít nereagující procesy na základě jejich jmen. Používání je snazší, ale může způsobit potíže, pokud nejste opatrní. Protože killall ukončuje procesy založené na jménech, vždy existuje šance, že proces zabijete náhodou. Například pokud jsou ve vašem systému k dispozici různé verze nano, první příklad všechny zabije.

$ killall nano $ killall --verbose nano $ killall --interaktivní nano $ killall --signál KILL nano

První příklad ukazuje základní použití příkazu killall v Linuxu. Druhý příkaz ohlásí, zda je úloha zabití úspěšná nebo ne, a třetí příkaz požádá uživatele o potvrzení, než proces zabije. Ve výchozím nastavení používá killall signál SIGTERM pro procesy usmrcování. Signál však můžete určit ručně, jak ukazuje poslední příklad.

Metoda 4: Použití praktických jednorázových linek


Skutečná krása Linuxu spočívá ve skutečnosti, že umožňuje uživatelům vytvářet sofistikované kombinace příkazů podle jejich potřeb. Abychom to prokázali, nastínili jsme v sekci několik jednorázových linií.

$ nano> / dev / null &
$ kill -9 $ (pgrep nano) $ ps aux | grep -e 'nano' | awk 'print $ 2' | xargs zabije -9

V prvním příkladu jsme použili interpolaci shellu k předání PID procesu 'nano' příkazu Linux kill. Druhý příklad využívá několik každodenních příkazů terminálu a přesměrování I / O k ukončení procesu. Jakmile budete s terminálem Linux spokojeni, můžete si vybrat své vlastní šikovné jednorázové linky.

Metoda 5: Zabijte více procesů pomocí skriptů Linux Shell


Někdy mohou uživatelé chtít ukončit více než jeden proces. Můžeme snadno automatizovat takové úkoly psaním jednoduchých shell skriptů. Pokud vás toto téma zajímá, podívejte se na našeho předchozího průvodce skripty prostředí Linux. Následující skript načte PPID procesů, které chcete zabít, a poté je ukončí pomocí signálů zabití.

$ nano proc-killer.sh
#!/ usr / bin / env bash pro pro v "$ @" do pid = $ (pgrep $ pro | head -1) echo $ pid comm = "kill -9 $ pid" eval $ comm hotovo

Nyní uložte tento soubor a přidejte oprávnění ke spuštění vydáním níže uvedeného příkazu.

$ chmod + x proc-killer.sh

Nyní můžete tomuto skriptu předat název procesů, které chcete ukončit.

$ ./ proc-killer.sh nano gedit vlc

Jednoduše nahraďte argumenty jmény nereagujících linuxových procesů ve vašem systému.

Ukončete nereagující proces z grafického uživatelského rozhraní


Proces, který nereaguje, můžete také ukončit z grafického uživatelského rozhraní nebo z okna X. V následující části probereme dvě metody, jak toho dosáhnout.

Metoda 1: Použití aplikace xkill


Moderní linuxové distribuce využívají grafické okno X pro poskytnutí elegantního grafického zážitku uživatelům. Existuje jednoduchý nástroj s názvem xkill, který umožňuje uživatelům zavřít nereagující okno grafického uživatelského rozhraní. Je to možné, protože v Linuxu je titulní okno aplikace oddělené od samotné aplikace.

Jednoduše přejděte do emulátoru terminálu Linuxu a zadejte xkill. Transformuje váš kurzor myši na tlačítko X, které lze použít k zabití jakéhokoli okna grafického uživatelského rozhraní.

$ xkill

Nyní stačí kliknout na lištu okna nereagující aplikace a ta bude zabita a okamžitě zmizí.

Metoda 2: Použití aplikace Sledování systému v systému Ubuntu


Většina mainstreamových linuxových distribucí přichází s nějakým druhem monitorovacích nástrojů GUI, které umožňují uživatelům graficky ukončit zavěšený linuxový proces. Například aplikace System Monitor v Ubuntu nám umožní intuitivní ukončení nereagujícího procesu. Můžete jednoduše vybrat mrtvý proces ze seznamu procesů a zabít jej kliknutím pravým tlačítkem na proces a výběrem možnosti zabití.

Existuje mnohem více alternativ k této aplikaci a jsme si jisti, že můžete snadno najít jednu pro vaši distribuci nebo desktopové prostředí.

Končící myšlenky


Vzhledem k tomu, že správa procesů v systému Linux je velmi univerzální, uživatelé jsou často frustrovaní při řešení nereagujících procesů. Proto naši redaktoři v této příručce nastínili všechny možné způsoby ukončení mrtvého procesu Linuxu. Po přečtení byste měli být schopni zabít všechny nereagující procesy z příkazového řádku nebo z grafického uživatelského rozhraní. Můžete také použít kterýkoli z našich jednorázových příkazů k řešení těchto nepříjemností v co nejkratším čase. Navíc můžete dokonce zabít více než jeden proces pomocí našeho jednoduchého skriptu prostředí. Doufejme tedy, že jste informace, které jste sledovali, získali od našeho průvodce.

Top 5 ergonomických produktů pro počítačové myši pro Linux
Způsobuje dlouhodobé používání počítače bolest zápěstí nebo prstů? Trpíte ztuhlými klouby a neustále si musíte třást ruce? Cítíte pálivou bolest pokaž...
Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...
Přemapujte tlačítka myši odlišně pro jiný software pomocí ovládání myší X-Mouse
Možná potřebujete nástroj, který by mohl změnit ovládání myši u každé aplikace, kterou používáte. V takovém případě můžete vyzkoušet aplikaci s názvem...