Ukončení procesů v Linuxu: Průvodce pro rok 2023
Každý z nás se občas setká s tím, že náš počítač pracuje neobvykle pomalu a seká se i při plnění jednoduchých úkolů. V operačním systému Windows je k dispozici Správce úloh, který umožňuje sledovat a ukončovat procesy zatěžující paměť. Nicméně Linux nabízí mnohem širší škálu nástrojů a příkazů pro efektivní správu těchto procesů. V tomto článku si představíme několik jednoduchých metod, jak ukončit procesy v Linuxu, jak prostřednictvím příkazového řádku, tak i za pomoci grafického rozhraní.
Procesy v Linuxu – co to vlastně je?
Než se pustíme do podrobností o správě procesů, objasněme si, co se vlastně procesem v Linuxu rozumí. V Linuxu se každá běžící instance programu nazývá „proces“. Spustitelný soubor, ze kterého proces vzniká, je pak „program“. Jakmile je program spuštěn, vytvoří se proces, kterému je přiděleno jedinečné pěticiferné číslo, známé jako „ID procesu“ (PID). Jakmile proces dokončí svou práci nebo je násilně ukončen, jeho PID se uvolní a může být přidělen novému procesu.
Ukončení procesů pomocí příkazového řádku v Linuxu
Přestože se práce s terminálem může zdát pro základní operace složitější než používání grafického rozhraní, správa procesů se s pochopením příkazů stává velmi efektivní a jednoduchá.
Signály pro ukončení
Při pokusu o ukončení procesu, ať už prostřednictvím grafického rozhraní, nebo příkazového řádku, jádro systému posílá procesu signál k ukončení. Proces se následně chová v závislosti na přijatém signálu. Každý takový signál má přidělené specifické číslo. Mezi nejdůležitější signály pro ukončení patří:
Signál | Číselná hodnota | Popis |
SIGHUP | 1 | Signal Hangup – zasílá se při zavření terminálu. |
SIGINT | 2 | Signal Interrupt – zasílá se, když uživatel ukončí proces. |
SIGKILL | 9 | Signal Kill – okamžité ukončení procesu. |
SIGTERM | 15 | Signal Terminate – požadavek na ukončení procesu a uvolnění prostředků. |
SIGSTOP | 19 (ARM, x86), 17 (ALPHA), 23 (MIPS), 24 (PA-RISC) | Signal Stop – dočasné pozastavení procesu. |
Mezi nejčastěji používané signály patří SIGKILL (9)
a SIGTERM (15)
.
Zjištění ID procesů
Před samotným ukončením procesu je nutné zjistit jeho ID a další informace. K tomu slouží příkaz ps
:
ps
Příkaz ps
zobrazí seznam všech spuštěných procesů. Pro zjednodušení můžete použít příkaz grep
pro filtrování konkrétního procesu:
ps | grep
Ještě jednodušší způsob, jak zjistit PID procesu, je pomocí příkazu pidof
:
pidof
Ukončení procesů pomocí příkazu kill
Jakmile znáte PID procesu, můžete ho ukončit pomocí příkazu kill
. Základní syntaxe je následující:
kill
Parametr <signal>
je volitelný. Pokud ho nezadáte, příkaz kill
standardně odešle signál SIGTERM (15)
. Pro odeslání jiného signálu zadejte jeho číselnou hodnotu nebo název.
Ukončení procesu pomocí příkazu pkill
Pro zjednodušení procesu hledání PID můžete využít příkaz pkill
, který ukončí procesy, které odpovídají zadanému vzoru. Jeho syntaxe je:
pkill
Některé užitečné volby pro příkaz pkill:
Volba | Popis |
-n | Vybere pouze nejnovější proces odpovídající ID |
-u | Vybere procesy vlastněné konkrétním uživatelem |
-x | Vybere procesy, které přesně odpovídají vzoru |
To je užitečné zejména v situacích, kdy více uživatelů pracuje se stejným programem a jedna instance začne fungovat nesprávně. Například na obrázku níže vidíme, jak ukončíme instanci „gedit“, která patří uživateli „intel“ pomocí příkazu pkill:
pkill -u intel gedit
Ukončení procesu pomocí příkazu killall
Příkaz killall
funguje podobně jako kill
, ale ukončí všechny procesy se zadaným názvem, bez ohledu na uživatele. Ve výchozím stavu odesílá signál SIGTERM
, pokud není specifikováno jinak. Příkaz killall
nemůže ukončit sám sebe, ale může ukončit jiné instance killall
. Syntax je následující:
killall
Mezi volby pro killall
patří:
Volba | Popis |
-r | Interpretuje název procesu jako regulární výraz |
-u | Ukončí procesy patřící danému uživateli |
-o | Ukončí procesy starší než zadaný čas |
-y | Ukončí procesy novější než zadaný čas |
Příkaz killall
je užitečný pro ukončení všech instancí stejného procesu nebo procesů patřících konkrétnímu uživateli. Níže ukážeme příklad ukončení všech procesů „sleep for 500 seconds“ pomocí killall:
killall -v spát
Ukončení procesu pomocí příkazů top/htop
Tyto metody jsou ideální, pokud nemáte přehled o procesech zatěžujících systém. Oba příkazy zobrazují seznam všech spuštěných procesů a umožňují jejich snadné ukončení. Příkaz top
spustíte jednoduchým zadáním:
top
Výstup příkazu top
je rozdělen do sloupců:
PID
– ID procesuUSER
– vlastník procesuPR
– priorita procesuNI
– „nice“ hodnota pro manuální úpravu priorityVIRT
– virtuální paměť využívaná procesemRES
– fyzická paměť využívaná procesemSHR
– sdílená paměťS
– stav procesu (D – nepřerušovaný spánek, R – běží, S – spí, T – zastaveno, Z – zombie)%CPU
– procento využití CPU%MEM
– procento využití pamětiTIME+
– celkový čas běhu procesuCOMMAND
– název příkazu
Pokud neznáte PID procesu, který chcete ukončit, můžete ho vyhledat pomocí šipek nebo stiskem klávesy ‚L‘ pro vyhledávání podle názvu. Jakmile proces najdete, stiskněte ‚k‘, zadejte PID (nebo ponechte zvýrazněný proces) a stiskněte ENTER. Dále zadejte signál pro ukončení a opět stiskněte ENTER. Pro opuštění top
stiskněte ‚q‘.
Příkaz htop
nabízí uživatelsky přívětivější rozhraní a přehlednější zobrazení procesů. Ve většině distribucí není předinstalovaný, proto jej nainstalujte pomocí:
sudo apt install -y htop
Spuštění htop
provedete příkazem:
htop
Pro ukončení procesu přejděte na jeho název, stiskněte klávesu F9 a Enter. Pro vyhledávání procesu stiskněte F3, zadejte jméno a potvrďte. Nalezený proces ukončíte opět pomocí klávesy F9 a Enter.
Ukončení procesů pomocí System Monitor
Pokud preferujete grafické rozhraní, můžete využít nástroj monitorování systému, který je součástí každé distribuce Linuxu. Otevřete System Monitor z nabídky Aplikace a postupujte podle následujících kroků:
1. V okně System Monitor přejděte na kartu „Procesy“. Zobrazí se seznam všech spuštěných procesů. Pomocí CTRL+F můžete vyhledat proces podle názvu. Klikněte na proces a vyberte možnost „Ukončit proces“.
2. Objeví se potvrzovací dialog. Kliknutím na červené tlačítko „Ukončit proces“ proces ukončíte.
Často kladené otázky
Jak zastavím všechny procesy v Linuxu?
Pro zastavení všech procesů patřících konkrétnímu uživateli (kromě přihlašovacího shellu a procesů jádra) použijte příkazy pkill
nebo killall
s volbou -u
:
pkill -u
killall -u
Pro ukončení všech procesů, včetně init systému, stiskněte na klávesnici ALT + Prt Sc + o
.
Je v pořádku ukončit proces?
Ukončení nepotřebných procesů na pozadí, které spotřebovávají mnoho paměti, uvolní systémové zdroje pro další procesy. Před ukončením se ale ujistěte, že se nejedná o důležitý systémový proces.
Jaké jsou procesy na pozadí v Linuxu?
Procesy na pozadí v Linuxu běží bez instance shellu a bez nutnosti interakce uživatele. Lze je zobrazit pomocí příkazů top
, htop
, ps
atd.
Co je to zombie proces?
Zombie proces je proces, který byl ukončen, ale stále zabírá paměť.
Co dělá CTRL + Z v Linuxu?
Kombinace CTRL + Z
odešle signál SIGTSTP
, který pozastaví proces a přesune jej na pozadí. Dokud není proces vrácen do popředí, nelze ho ukončit.
Snadné ukončování procesů v Linuxu
Ukončování procesů, které nadměrně zatěžují paměť, je základní dovednost pro každého uživatele. V tomto článku jsme si ukázali, jak používat příkazový řádek (killall
, pkill
), tak grafické uživatelské rozhraní pro ukončování procesů v Linuxu. Popsali jsme i oblíbené nástroje jako top
a htop
. Pokud narazíte na jakékoliv problémy, dejte nám vědět v komentářích.