Ako zabiť proces v systéme Linux

How Kill Process Linux



Každý operačný systém Linux je dodávaný s príkazom kill. Jediným účelom tohto nástroja je ukončiť cieľový proces. Je to účinný nástroj, vďaka ktorému je Linux celkom univerzálny, najmä v serverových a podnikových oblastiach, kde sa zásadná zmena/aktualizácia môže prejaviť bez reštartu celého počítača. V tomto článku ukážem, ako zabiť proces pomocou zabiť , pkill a zabiť všetkých .

Zabitie procesu

Na zabitie procesu použijeme niekoľko nástrojov: zabiť , pkill a zabiť všetkých . Všetky fungujú v zásade rovnako.







Tieto nástroje samotný proces neukončia. Namiesto toho vyšlú určený signál do cieľového procesu alebo procesných skupín. Ak ste nezadali žiadny konkrétny signál, SIGTERM sa odošle ako predvolený signál. Existuje však množstvo podporovaných signálov, napríklad SIGKILL, SIGHUP atď.



Tu je základná štruktúra príkazov pre zabiť , pkill a zabiť všetkých .



$zabiť <signal_or_options> <PID(s)>
$ pkill<signal_or_options> <názov_procesu>
$zabiť všetkých <možnosť> <názov_procesu>

Kedykoľvek je to možné, odporúča sa použiť zabiť .





Zabiť , pkill a zabiť všetkých miest

Kill je predvolený príkaz na ukončenie procesu.



$zabiť --Pomoc

Je spustený z adresára /usr /bin.

$ktoré zabiť

Výhodou je, že tiež umožňuje prístup k pkill, ďalšiemu príkazu podobnému zabíjaniu, ktorý umožňuje ukončenie procesu na základe ich mena.

$pkill--Pomoc

$ktorépkill

Niektoré aplikácie spúšťajú viacero procesov toho istého spustiteľného súboru. Ak chcete ukončiť niekoľko procesov s rovnakým názvom, použite nástroj killall.

$zabiť všetkých --Pomoc

$ktoré zabiť všetkých

Zoznam všetkých spustených procesov

Úplne prvou úlohou je identifikácia PID (identifikačné číslo procesu) a/alebo názvu procesu, ktorý chcete ukončiť. V tomto prípade budem ako cieľový proces používať Firefox. Spustením nasledujúceho príkazu zobrazíte zoznam všetkých spustených procesov v systéme.

$ps -TO

Pri väčšine úloh potrebujeme poznať PID cieľového procesu. V určitých situáciách je však vhodnejšie použiť názov procesu.

Ak poznáte presný názov cieľového procesu, PID môžete priamo získať pomocou pidof .

$pidof <názov_procesu>

Ďalším zaujímavým nástrojom na získanie informácií o cieľovom procese je pgrep. Je to špeciálne navrhnuté na tento účel.

$pgrep<možnosť> <názov_procesu>

Zabite signály

Teraz sa pozrime na signály, ktoré nástroje na zabíjanie podporujú. Je to obrovský zoznam. Samozrejme, nie všetky sú potrebné pre každú jednu situáciu. V skutočnosti väčšina situácií vyžaduje iba niekoľko signálov.

Najprv sa pozrime na zoznam, ktorý zabíja podpery.

$zabiť -ten

Existujú 2 spôsoby, ako definovať, ktorý signál chcete odoslať. Môžete použiť buď úplný názov signálu, alebo jeho ekvivalentnú hodnotu.

$zabiť-<signál> <PID>

Alebo,

$zabiť-<signal_value> <PID>

Najpopulárnejšími signálmi sú SIGHUP (1), SIGKILL (9) a SIGTERM (15). SIGTERM je spravidla predvolený a najbezpečnejší spôsob ukončenia cieľového procesu.

V prípade pkill je podporovaný signál rovnaký ako kill. V prípade killall je však počet podporovaných signálov a názvy signálov rozdielne.

$zabiť všetkých -ten

Zabitie procesu

Na zabitie procesu potrebujeme PID tohto cieľového procesu. Za predpokladu, že máte PID, spustite ho nasledujúcim príkazom.

$zabiť <možnosť> <PID>

Tu kill pošle predvolený signál SIGTERM do PID. Ak ste chceli ukončiť viacero procesov, uveďte všetky PID oddelené medzerou.

$zabiť <možnosť> <PID_1> <PID_2>

Špecifikujeme, ktorý signál chcete odoslať do cieľa.

Chcete proces ukončiť iba pomocou jeho názvu? Použite pkill.

$pkill<možnosť> <názov_procesu>

V niektorých prípadoch môže mať konkrétna aplikácia spustených príliš veľa procesov. Zadávanie všetkých týchto PID je časovo náročné a únavné. V takýchto scenároch použijeme nástroj killall. Je to celkom podobné zabíjaniu, ale funguje to s názvom procesu.

$zabiť všetkých <možnosť> <názov_procesu>

Napríklad pri spustení Firefoxu spustí niekoľko procesov. Ak chcete zabiť všetkých naraz, spustite tento príkaz.

$zabiť všetkýchfirefox

Chcete ukončiť všetky procesy, ktoré bežia pod určitým používateľom? Killall to zvládne, žiadny problém. Pri spustení tohto postupu buďte opatrní, pretože by to mohlo poškodiť systém a spôsobiť ďalšie problémy. Nefunguje to, ak sa pokúšate ukončiť procesy, ktoré bežia pod iným používateľom s vyšším oprávnením.

$zabiť všetkých -u <používateľ>

Konflikt povolení

Prirodzené charakteristiky hierarchie používateľov Linuxu platia aj vtedy, keď sa chystáte ukončiť aplikáciu. Užívateľ nemôže ukončiť procesy, ktoré sú spustené s vyšším oprávnením, iba procesy s rovnakým/nižším oprávnením. Užívateľ navyše nemôže manipulovať s procesmi, ktoré bežia pod iným používateľom.

Pozrime sa napríklad na príkaz áno. Ak sa tomu hovorí ako aktuálny používateľ, dá sa to ľahko ukončiť pomocou kill.

$zabiť Áno

Teraz, čo keby Áno bežal pod koreň ? Zavolanie zabiť ako aktuálneho používateľa nebude fungovať.

Podobne, ak bol proces spustený pod iným používateľom, nemôžete ho ukončiť z iného používateľského účtu.

Záverečné myšlienky

V tomto článku boli predstavené iba základy a bežné používanie týchto príkazov. Tieto nástroje na zabíjanie sú schopné oveľa viac. Ak chcete získať podrobné znalosti o schopnostiach akéhokoľvek nástroja, odporúčam vám pozrieť sa na manuálovú stránku.

$muž zabiť

$mužpkill

Užite si to!