Jak zabít proces v Linuxu

How Kill Process Linux



Každý operační systém Linux je dodáván s příkazem kill. Jediným účelem tohoto nástroje je ukončit cílový proces. Je to účinný nástroj, díky kterému je Linux docela univerzální, zejména v serverových a podnikových oblastech, kde může zásadní změna/aktualizace proběhnout bez restartování celého počítače. V tomto článku ukážu, jak zabít proces pomocí zabít , pkill a zabít všechny .

Zabití procesu

K zabití procesu použijeme několik nástrojů: zabít , pkill , a zabít všechny . Všechny fungují v podstatě stejným způsobem.







Tyto nástroje samotný proces neukončují. Místo toho vysílají určený signál cílovému procesu nebo procesním skupinám. Pokud jste nezadali žádný konkrétní signál, bude jako výchozí signál odeslán SIGTERM. Existuje však řada podporovaných signálů, například SIGKILL, SIGHUP atd.



Zde je základní struktura příkazů pro zabít , pkill a zabít všechny .



$zabít <signal_or_options> <PID(s)>
$ pkill<signal_or_options> <název_procesu>
$zabít všechny <volba> <název_procesu>

Kdykoli je to možné, doporučuje se použít zabít .





Zabít , pkill a zabít všechny umístění

Kill je výchozí příkaz pro ukončení procesu.



$zabít --Pomoc

Je spuštěn z adresáře /usr /bin.

$který zabít

Výhodou je, že také umožňuje přístup k pkill, dalšímu příkazu podobnému zabíjení, který umožňuje ukončení procesu na základě jejich jména.

$pkill--Pomoc

$kterýpkill

Některé aplikace spouští více procesů stejného spustitelného souboru. Pokud chcete ukončit řadu procesů se stejným názvem, použijte nástroj killall.

$zabít všechny --Pomoc

$který zabít všechny

Seznam všech spuštěných procesů

Úplně první úkol je identifikovat PID (identifikační číslo procesu) a/nebo název procesu, který chcete ukončit. V tomto případě budu jako cílový proces používat Firefox. Spuštěním následujícího příkazu zobrazíte seznam všech spuštěných procesů v systému.

$ps -NA

Pro většinu úkolů potřebujeme znát PID cílového procesu. V určitých situacích je však vhodnější použít název procesu.

Pokud znáte přesný název cílového procesu, můžete přímo získat PID pomocí pidof .

$pidof <název_procesu>

Dalším zajímavým nástrojem pro získání informací o cílovém procesu je pgrep. Je speciálně navržen pro tento účel.

$pgrep<volba> <název_procesu>

Zabijte signály

Pojďme se nyní podívat na signály, které nástroje pro zabíjení podporují. Je to obrovský seznam. Samozřejmě ne všechny jsou nutné pro každou jednotlivou situaci. Ve skutečnosti většina situací vyžaduje pouze několik signálů.

Nejprve se podívejme na seznam, který zabíjí podpory.

$zabít -ten

Existují 2 způsoby, jak definovat, který signál chcete odeslat. Můžete použít buď úplný název signálu, nebo jeho ekvivalentní hodnotu.

$zabít-<signál> <PID>

Nebo,

$zabít-<signal_value> <PID>

Nejoblíbenějšími signály jsou SIGHUP (1), SIGKILL (9) a SIGTERM (15). Obecně je SIGTERM výchozím a nejbezpečnějším způsobem ukončení cílového procesu.

V případě pkill je podporovaný signál stejný jako kill. V případě killall se však počet podporovaných signálů a názvy signálů liší.

$zabít všechny -ten

Zabití procesu

K zabití procesu potřebujeme PID tohoto cílového procesu. Za předpokladu, že máte PID, spusťte následující příkaz a zabijte jej.

$zabít <volba> <PID>

Zde kill pošle výchozí signál SIGTERM do PID. Pokud jste chtěli ukončit více procesů, zmiňte všechny PID oddělené mezerou.

$zabít <volba> <PID_1> <PID_2>

Určíme, který signál chcete do cíle odeslat.

Chcete proces ukončit pouze pomocí jeho názvu? Použijte pkill.

$pkill<volba> <název_procesu>

V některých případech může mít konkrétní aplikace spuštěno příliš mnoho procesů. Zadávání všech těchto PID je časově náročné a únavné. V takových scénářích použijeme nástroj killall. Je to docela podobné zabíjení, ale funguje to s názvem procesu.

$zabít všechny <volba> <název_procesu>

Například při spuštění Firefoxu spustí hrstku procesů. Chcete -li zabít všechny najednou, spusťte tento příkaz.

$zabít všechnyFirefox

Chcete ukončit všechny procesy, které běží pod určitým uživatelem? Killall to zvládne, není problém. Při spouštění buďte opatrní, protože by to mohlo poškodit systém a způsobit další problémy. Pokud se pokoušíte ukončit procesy, které běží pod jiným uživatelem s vyšším oprávněním, nebude to fungovat.

$zabít všechny -u <uživatel>

Konflikt povolení

Vlastní vlastnosti hierarchie uživatelů Linuxu platí také tehdy, když se chystáte ukončit aplikaci. Uživatel nemůže ukončit procesy, které běží s vyšším oprávněním, pouze procesy se stejným/nižším oprávněním. Uživatel navíc nemůže manipulovat s procesy, které běží pod jiným uživatelem.

Podívejme se například na příkaz yes. Pokud je nazýván jako aktuální uživatel, lze jej snadno ukončit pomocí kill.

$zabít Ano

No a co kdyby Ano běžel pod vykořenit ? Volání kill jako aktuálního uživatele nebude fungovat.

Podobně, pokud byl proces spuštěn pod jiným uživatelem, nemůžete jej ukončit z jiného uživatelského účtu.

Závěrečné myšlenky

V tomto článku byly představeny pouze základy a běžné použití těchto příkazů. Tyto nástroje zabíjení dokážou víc než to. Chcete-li mít hluboké znalosti o schopnostech jakéhokoli nástroje, doporučuji se podívat na manuálovou stránku.

$muž zabít

$mužpkill

Užívat si!