Jak zabít procesy z linuxového terminálu

Zabití procesu je někdy jediný způsob, jak se ho zbavit. Navzdory drsnému názvu „zabití“ procesu znamená pouze „přinutit jej ukončit“. Zde je návod, jak to udělat z příkazového řádku Linuxu 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, to vše jsou procesy.

Procesy můžete rozdělit do dvou skupin:

Procesy v popředí jsou procesy, které byly spuštěny nebo spuštěny uživatelem. Mohou být v okně terminálu nebo to mohou být grafické aplikace.
Procesy na pozadí jsou všechny procesy, které se spouštějí automaticky a nemají žádnou interakci s uživateli. Neočekávají vstup od uživatelů, ani jim neprezentují výsledky nebo výstup. Procesy na pozadí jsou věci jako služby a démoni.

Jsou-li procesy v popředí přední zaměstnanci divadla a herci, procesy v pozadí jsou týmem „zákulisí“.

Když se procesy chovají špatně nebo nefungují, mohou zabrat příliš mnoho času CPU, spotřebovat vaši RAM nebo vstoupit do těsné výpočetní smyčky a přestat reagovat. Grafické aplikace mohou odmítat reagovat na kliknutí myší. Terminálové aplikace vás nemusí nikdy vrátit do příkazového řádku.

Humánní odpověď

„Zabití“ procesu znamená pouze „přinutit proces ukončit“. To může být nutné, pokud proces odmítá reagovat.

Linux poskytuje příkazy kill, pkill a killall, které vám to umožňují. Tyto příkazy lze použít s jakýmkoli typem procesu, grafickým nebo příkazovým řádkem, v popředí nebo na pozadí.

  Jak sdílet svou obrazovku ve službě Google Meet

Příkaz k zabití

Chcete-li použít kill, musíte znát ID procesu (PID) procesu, který chcete ukončit. Příkaz ps lze použít k nalezení PID procesu.

Chcete-li, aby ps prohledával všechny procesy, použijte volbu -e (všechny procesy). Doporučuje se vést výstup přes méně, bude toho docela dost. Zadejte ps, mezeru, -e, mezeru, | (svislý znak), další mezeru a poté zadejte méně. Stiskněte Enter pro provedení příkazu.

ps -e | less

Získáte tak výpis procesů, který vypadá podobně jako níže uvedený snímek obrazovky. Pomocí klávesy / můžete vyhledávat vpřed méně a pomocí klávesy ? klíč.

Chcete-li se vrátit k procesu, který vás zajímá, propojte výstup z ps přes grep a zadejte název – nebo část názvu – procesu.

ps -e | grep shutter

Jakmile najdete PID procesu, který chcete ukončit, předejte jej příkazu kill jako parametr. Chcete-li ukončit proces závěrky identifikovaný předchozím příkazem, použijte tento příkaz:

kill 2099

Příkaz kill je tichý zabiják – nedává vám žádnou zpětnou vazbu, pokud byl úspěšný.

Příkaz pkill

Příkaz pkill vám umožňuje zabít proces – nebo procesy – podle názvu. Proces není nutné identifikovat pomocí PID. Chcete-li použít pkill, zadejte hledaný výraz, který pkill používá ke kontrole se seznamem běžících procesů. Procesy párování jsou ukončeny. Takže si musíte být jisti, že máte hledaný výraz napsán správně.

Jako záchrannou síť můžete před použitím příkazu pkill použít příkaz pgrep. Příkaz pgrep 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 nevyšle žádný signál k ukončení procesům, a pokud špatně zadáte hledaný výraz, nezabijete omylem jiný proces. Než jej předáte pkillovi, můžete se ujistit, že máte hledaný výraz správně promyšlený. Jak pkill, tak pgrep zacházejí s hledaným výrazem stejným způsobem. Jejich léčba je tak podobná, že oni sdílet stejnou manuálovou stránku.

  Hudební bubliny ovládejte Google Music pomocí všudypřítomného plovoucího tlačítka

Předpokládejme, že existuje proces s „subq“ ve svém názvu. Použijeme ps -u dave | příkaz grep k nahlédnutí za oponu. Můžete vidět, že „subq“ bude odpovídat tomuto procesu a tomuto procesu samotnému. To bylo jen proto, abyste viděli celý název procesu.

ps -u dave | grep subq

Předpokládejme, že to náš uživatel neudělal; vše, co vědí, je, že název procesu obsahuje podřetězec „subq“. Používají pgrep ke kontrole, zda existuje pouze jedna shoda s hledaným výrazem. Tento hledaný výraz pak použijí s pkill.

pgrep subq
pkill subq

Pomocí pkill můžete zabít několik procesů najednou. Zde uživatel spustí pgrep, aby zkontroloval, kolik procesů Chrome spustil. Používají pkill, aby je všechny zabili. Poté zkontrolují pomocí pgrep, že byly všechny odstraněny.

pgrep chrome
pkill chrome
pgrep chrome

Pokud běží několik procesů se stejným názvem, ale nechcete je všechny zabít, můžete použít pgrep s volbou -f (příkazový řádek) k identifikaci, který proces je který. Jednoduchým příkladem by byly dva procesy ping. Chcete zabít jednoho z nich, ale ne druhého. K rozlišení mezi nimi můžete použít jejich příkazové řádky. Všimněte si použití uvozovek k zalomení parametru příkazového řádku.

pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"

Killall Command

Upozornění: V operačních systémech Solaris a OpenIndiana příkaz killall zabije všechny procesy, které vám patří. Pokud jste root nebo pokud jste zadali sudo killall, restartujete počítač! Během výzkumu pro tento článek bylo toto chování potvrzeno s nejnovější verzí OpenIndiana Hipster 2018.10.

  Jak změnit kódování znaků v aplikaci Outlook

Příkaz killall funguje podobným způsobem na příkaz pkill, ale se specifickým rozdílem. Namísto předání hledaného výrazu příkazu musíte zadat přesný název procesu.

Nemůžete poskytnout částečnou shodu s názvem procesu; musíte zadat celý název procesu, jak je uvedeno:

killall shutt
killall shutter

Volba -y (mladší než) vám umožňuje ukončit procesy, které byly spuštěny méně než zadanou dobu. Období je uvedeno v číslech, za nimiž následuje jedna z těchto jednotek:

s (sekundy)
m (minuty)
h (hodiny)
d (dny)
w (týdny)
M (měsíce, poznámka, velké „M“)
y (roky)

Chcete-li zabít proces zvaný ana, který byl právě spuštěn, a ponechat všechny starší instance ana spuštěné, můžete s killall použít následující parametry, pokud byste zareagovali do dvou minut:

killall -y 2m ana

Volba -o (starší než) vám umožňuje ukončit procesy, které byly spuštěny déle než zadanou dobu. Tento příkaz ukončí všechna připojení ssh, 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í správně a s přesností a bezpečností identifikovat a ukončit chybné procesy.

Buďte vždy opatrní. Nejprve se ujistěte, že proces, který se chystáte zabít, je skutečně ten, který chcete. Zadruhé, zkontrolujte – buďte opatrní a ujistěte se, že cílový proces je ten, který chcete ukončit. Jakmile budete spokojeni, pokračujte v ukončení procesu.