Zabití procesu je někdy jediný způsob, jak se ho zbavit. Navzdory krutému jménu znamená „zabití“ procesu jen „nutit ho k ukončení“. Zde je postup, jak to provést z příkazového řádku systému Linux nebo macOS.
Co je to proces?
Spuštěné programy, jako je váš webový prohlížeč, procesy na pozadí spojené s vaším desktopovým prostředím a systémové služby Linux, jsou všechny procesy.
Procesy můžete rozdělit do dvou skupin:
- Popředí procesy jsou ty, které byly spuštěny nebo spuštěny uživatelem. Mohou být v okně terminálu nebo mohou být grafickou aplikací.
- Procesy na pozadí jsou všechny procesy, které se spouští automaticky a nemají žádnou interakci s uživateli. Neočekávají od uživatelů vstup, ani jim nepředstavují výsledky ani výstupy. Procesy na pozadí jsou věci jako služby a démoni.
Pokud jsou procesy v popředí přední částí divadelních herců a herců, jsou procesy v pozadí zákulisním týmem „zákulisí“.
Když se procesy chovají špatně nebo selhávají, mohou zabrat příliš mnoho času CPU, spotřebovat RAM nebo vstoupit do těsné výpočetní smyčky a přestat reagovat. Grafické aplikace mohou odmítnout reagovat na kliknutí myší. Terminálové aplikace vás nemusí nikdy vrátit na příkazový řádek.
Humánní odpověď
„Zabíjení“ procesu znamená „nutit proces k ukončení“. To může být nutné, pokud proces odmítá reagovat.
Linux poskytuje
zabít
,
pkill
, a
zabít všechny
příkazy, které vám to umožní. Tyto příkazy lze použít s jakýmkoli typem procesu, grafickým nebo příkazovým řádkem, popředím nebo pozadím.
Příkaz zabití
Použít
zabít
, musíte znát ID procesu (PID) procesu, který chcete ukončit. The
ps
příkaz lze použít k nalezení PID procesu.
Mít
ps
prohledávat všechny procesy používají
-je
(všechny procesy). Potrubí výstup přes
méně
je vhodné, bude toho dost. Typ
ps
, prostor,
-je
, prostor,
|
(znak kanálu), další mezeru a poté zadejte
méně
. Stisknutím klávesy Enter proveďte příkaz.
ps -e | méně
Získáte tak seznam procesů, který vypadá podobně jako snímek obrazovky níže. Můžete hledat vpřed v
méně
za použití
/
a můžete vyhledávat zpět pomocí
?
klíč.
Chcete-li se zapojit do procesu, který vás zajímá, vydejte výstup z
ps
přes
rukojeť
a určit název procesu nebo jeho část.
ps -e | grep střelec
Jakmile najdete PID procesu, který chcete ukončit, předejte jej
zabít
příkaz jako parametr. Ukončit
závěrka
proces identifikovaný předchozím příkazem, použijte tento příkaz:
zabít 2099
The
zabít
příkaz je tichý zabiják - neposkytne vám žádnou zpětnou vazbu, pokud byl úspěšný.
Příkaz pkill
The
pkill
příkaz umožňuje zabít proces - nebo procesy - podle jména. Proces nemusíte identifikovat pomocí PID. Použít
pkill
zadáte hledaný výraz, který
pkill
používá ke kontrole proti seznamu spuštěných procesů. Procesy párování jsou ukončeny. Musíte tedy být pozitivní, že jste hledaný výraz napsali správně.
Jako bezpečnostní síť můžete použít
pgrep
příkaz
před
používáte
pkill
příkaz. The
pgrep
příkaz také přijímá hledaný výraz. Zobrazí seznam PID každého procesu, který odpovídá hledanému výrazu. To je bezpečné, protože
pgrep
nevydá procesům žádný signál zabití a pokud zadáte nesprávně hledaný výraz, omylem nezabijete další proces. Než jej předáte, můžete se ujistit, že máte hledaný výraz správně promyšlený
pkill
. Oba
pkill
a
pgrep
zacházejte s hledaným výrazem stejně. Jejich zacházení je tak podobné, že oni
sdílet stejnou manuálovou stránku
.
Předpokládejme, že existuje proces s názvem „subq“. Použijeme
ps -u dave | grep
rozkaz nahlédnout za oponu. Vidíte, že „subq“ bude odpovídat tomuto procesu a samotnému procesu. To bylo jen proto, abyste viděli celý název procesu.
ps -u dave | grep subq
Předpokládejme, že je náš uživatel
ne
udělat to; vše, co vědí, je, že název procesu obsahuje podřetězec „subq.“ oni používají
pgrep
zkontrolovat, zda s hledaným výrazem existuje pouze jedna shoda. Tento vyhledávací dotaz poté použijí s
pkill
.
pgrep subq
pkill subq
Můžeš použít
pkill
zabít několik procesů najednou. Zde uživatel běží
pgrep
zkontrolovat, kolik procesů Chrome spustil. oni používají
pkill
zabít je všechny. Poté to zkontrolují
pgrep
že všechny byly odstraněny.
pgrep chrom
pkill chrom
pgrep chrom
Pokud běží několik procesů se stejným názvem, ale nechcete je všechny zabít, můžete použít
pgrep
s
-F
(příkazový řádek) možnost určit, který proces je který. Jednoduchým příkladem by byly dva
ping
procesy. Chcete zabít jednoho z nich, ale druhého ne. K jejich rozlišení můžete použít jejich příkazové řádky. Všimněte si použití uvozovek k zabalení parametru příkazového řádku.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Příkaz killall
Varování
: V operačních systémech Solaris a OpenIndiana
zabít všechny
příkaz bude
zabijte všechny procesy, které vám patří
. Pokud jsou root nebo pokud jste vydali
sudo killall
restartujete počítač! Během průzkumu tohoto článku bylo toto chování potvrzeno nejnovější verzí OpenIndiana Hipster 2018.10.
The
zabít všechny
příkaz
funguje podobným způsobem
do
pkill
příkaz, ale se specifickým rozdílem. Místo předávání vyhledávaného výrazu do příkazu musíte zadat přesný název procesu.
Nelze zadat částečnou shodu s názvem procesu; musíte zadat celý název procesu, jak je znázorněno:
Killall Shutt
závěrka Killall
The
-Y
Možnost (mladší než) umožňuje zabít procesy, pro které běží
méně
než stanovené období. Období je uvedeno v číslech následovaných jednou z těchto jednotek:
- s (sekundy)
- m (minuty)
- h (hodiny)
- d (dny)
- w (týdny)
- M (měsíce, poznámka, kapitál „M“)
- y (roky)
Zabít proces zvaný
matka
který byl právě spuštěn a ponechá všechny starší instance
matka
spuštěné, můžete použít následující parametry s
zabít všechny
, pokud byste zareagovali do dvou minut:
Snižte mě nebo mě
The
-The
Možnost (starší než) umožňuje zabít procesy, které běží déle než zadané období. Tento příkaz zabije všechny
ssh
připojení, která byla spuštěna déle než jeden den:
killall -o 1d sshd
Nebuďte příliš šťastní
Tyto příkazy vám umožní přesně a bezpečně identifikovat a ukončit chybné procesy.
Buďte vždy opatrní. Nejprve se ujistěte, že proces, který se chystáte zabít, je opravdu ten, který chcete. Zadruhé, dvojitá kontrola - buďte opatrní a zajistěte, aby cílený proces byl ten, který chcete ukončit. Až budete spokojeni, pokračujte v ukončení procesu.