Ako zabiť proces podľa názvu v systéme Linux

Vynútiť ukončenie nesprávne sa správajúcich procesov pomocou týchto príkazov systému Linux

Ak chcete vysvetliť význam „procesu“ najjednoduchšími slovami, je to spustená inštancia akejkoľvek aplikácie alebo programu vo vašom systéme. Môžete mať spustených viacero aplikácií súčasne, ako je prehliadanie, počúvanie hudby na vašom termináli atď. S týmito aplikáciami je spojených mnoho procesov na pozadí, ktoré spúšťa používateľ.

Každá aplikácia alebo program, ktorý beží na vašom systéme, vytvára viacero procesov spojených s vašou jedinou aplikáciou. Niekedy to môže byť problém a zbaviť sa týchto procesov je jediná možnosť, ktorú máte.

„Zabitie“ procesu je jednou z užitočných možností, ktoré vám Linux poskytuje na zastavenie prebiehajúcich procesov, či už ide o proces v popredí alebo proces na pozadí. V tomto článku preskúmame príkazy ako zabiť, pkill a zabiť všetkých vynútiť ukončenie akéhokoľvek procesu v systéme.

Prečo zabíjať proces?

Pochopenie konceptu zabíjania procesu je dôležité predtým, ako sa pustíte do tohto tutoriálu. Zabíjanie sa môže zdať veľmi brutálnym spôsobom vyjadrenia konceptu, ale čo to obrazne znamená, je násilné prerušenie procesu.

Teraz, prečo prerušiť alebo ukončiť prebiehajúci proces? Keď na pozadí beží viacero procesov, všetky alebo len málo z nich môže zlyhať a môže spôsobiť nesprávne fungovanie systému. To oneskorí vaše prebiehajúce úlohy, pretože nefunkčný proces môže na chvíľu zamrznúť váš systém.

Niekedy sa zdá, že ukončenie všetkých nesprávnych procesov je jedinou možnosťou na obnovenie normálneho stavu vášho systému. Linux vám umožňuje zabiť proces pomocou pid alebo názov procesu.

Pomocou pgrep príkaz

Väčšina používateľov Linuxu pozná grep príkaz. The pgrep príkaz možno použiť na podobných riadkoch grep.

pgrep pri použití príkazu zobrazí pid bežiaceho procesu, ako je uvedené v príkaze. Tento príkaz sa ukáže ako veľmi užitočný pri používaní pkill príkaz.

Všeobecná syntax:

pgrep [možnosti] [vzor]

Dôležité možnosti dostupné s pgrep príkaz

MožnosťPopis
-uzoznam ID procesu, ktorý vlastní konkrétny používateľ
-cpočítať počet zodpovedajúcich procesov
-Jauveďte iba názvy procesov
-auveďte celú cestu názvu procesu

Ukážme si použitie pgrep príkaz pomocou príkladu.

pgrep -u gaurav trpaslík

Tu by sme chceli vidieť pids procesného trpaslíka, ktorý vlastní používateľ „gaurav“. Možnosť -u umožňuje vypísať zoznam pids procesov vlastnených konkrétnym používateľom. V tomto prípade používateľ gaurav.

Výkon:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

Ako pokračujeme v tomto návode, pgrep príkaz nám pomôže potvrdiť, či bol proces zabitý alebo stále beží.

Prejdime teraz k pkill príkaz a jeho vykonanie.

Použitím pkill príkaz

Môžete použiť pkill príkaz v systéme Linux na zabitie procesu pomocou názvu procesu. Aj keď neviete, pid niektorého procesu, dokonca aj potom môžete tento konkrétny proces zabiť pomocou pkill príkaz.

Procesy môžu byť špecifikované s ich úplným názvom alebo čiastočným názvom pri použití pkill príkaz. Aj keď zadáte čiastočný názov procesu, pkill príkaz porovná všetky spustené procesy so zodpovedajúcim názvom, ktorý ste zadali v príkaze.

Syntax:

pkill [options][process_name_pattern] 

Príklad:

Ukážme si aktuálne spustené procesy pomocou top príkaz. Môžete tiež použiť ps príkaz na zoznam procesov.

top
hore - 14:24:02 hore 3:12, 1 používateľ, priemerná záťaž: 0,29, 0,48, 0,58 Úlohy: 221 celkom, 1 bežiaca, 172 spiaca, 0 zastavená, 1 zombie %Cpu(y): 5,6 us, 1,0 sy , 0,0 ni, 92,9 id, 0,4 wa, 0,0 hi, 0,1 si, 0,0 st KiB Mem : 3928240 celkom, 610456 voľných, 2233152 použitých, 1084632 voľných, 484632 buff/cache celkom 378 KiB 837 Swap: 1187268 dostup Mem PID USER PR NI virt RES SHR S% CPU% MEM TIME + COMMAND 4077 Gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13.23 Web Content 3712 Gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28,39 MainThread 2010 Gaurav 20 0 4084232 111096 45024 S 1,7 2,8 3: 14,85 gnome-shell 1197 koreň 20 0 1039612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 CouchDB 20 0 3772396 16908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 Gaurav 20 0 722480 25048 18272 S 0,7 0,6 0: 06,84 gnome-terminal- 3915 Gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 webový obsah 4146 Gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01.21 webový obsah 4417 Gaurav 20 0 2964208 234396 119160 S 0.7 6.0 0 :59,90 Web Content 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Web Content 16007 gaurav 20 0 41944 3780 2871 top 0,00 

Použitím top príkaz zobrazí viacero procesov na vašom termináli. Skúsme zobraziť proces s konkrétnym názvom. Budeme používať grep príkaz na zobrazenie procesu, ktorého názov sa zhoduje s reťazcom „mongo“.

hore | grep -i mongo

Poznámka: Tu som použil možnosť -i, aby vyhľadávanie nerozlišovalo veľké a malé písmená.

Výstup tohto príkazu zobrazí procesy zodpovedajúce názvu „mongo“

 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,22 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,40 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1: 03,45 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 MongoDB 20 0 288564 4848 1320 S 1,0 0,1 1: 03,52 mongod 1158 MongoDB 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Teraz použijeme pkill príkaz na zabitie procesu s názvom „mongo“.

pkill mongo

Tento príkaz teraz zabije proces mongo. Môžeme potvrdiť, či bol proces nútený ukončiť pomocou pgrep príkaz, ktorý zobrazí pid prebiehajúceho procesu podľa kritérií zadaných používateľom.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

Tento príkaz nevráti žiadnu hodnotu. To potvrdzuje, že proces „mongo“ je teraz zabitý pomocou pkill príkaz.

Možnosti často používané s pkill príkaz

Počas používania pkill Na správne a bezproblémové používanie príkazu budeme potrebovať uvedené možnosti pkill príkaz.

možnostiPopis
-fporovnávať s úplnými argumentmi vrátane medzier, úvodzoviek a špeciálnych znakov
-uinformovať proces pkill, aby sa zhodoval s procesom, ktorý spúšťa zadaný používateľ
-1znovu načíta proces
-9zabíja proces
-15elegantne preruší proces

Pozrime sa ešte na jeden príklad pkill príkaz pomocou -f možnosť.

Na termináli sa momentálne vykonávajú dva príkazy, ako je znázornené nižšie.

ping bbc.com ping youtube.com

Oba procesy sú iniciované ping príkaz. Teraz predpokladajme, že chceme ukončiť iba jeden proces „ping youtube.com“, potom musíme použiť -f možnosť s pkill príkaz, ktorý zabije proces so špecifickým názvom vrátane medzier a úvodzoviek z názvu procesu.

Príkaz:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

výsledok:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bajtov dát. 64 bajtov z bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 čas=30,9 ms 64 bajtov z bom12s08-in-f14.1e100.20.net (142.2506.q)= =117 čas=121 ms 64 bajtov z bom12s08-in-f14.1e100.net (142 250.67.206): icmp_seq=206 ttl=117 čas=86,5 ms 64 bajtov z bom12s1708-in-0.6 ): icmp_seq=207 ttl=117 čas=105 ms Ukončené gaurav@ubuntu:~$ 

Tu je „ping na youtube.com“proces je teraz zabitý a “ping bbc.com” stále beží na termináli.

V prípade, ak by sme použili pkill ping velenie, zabilo by to oboch ping procesov, čo je nežiaduce.

Signály používané s pkill príkaz

pkill prinúti proces ukončiť odoslaním špecifického signálu tomuto procesu. Existujú tri možné signály, ktoré pkill príkaz môže poslať procesu v závislosti od príkazu, ktorý používateľ zadá.

Nasleduje zoznam dostupných signálov.

SignálŠpecifikácia
1(HUP)znovu načíta zadaný proces
9 (ZABIŤ)zabije zadaný proces
15 (TERMÍN)jemne zastaví alebo preruší špecifikovaný proces

V tomto návode sa budeme vo veľkej miere spoliehať na ZABIŤ signál. Poďme si prejsť niekoľko príkladov, aby sme to lepšie pochopili.

Pomocou pgrep príkaz na získanie pid zodpovedajúce názvu apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -KIll apache

ALEBO môžete použiť aj príkaz s číslami (napr. 1, 9, 15)

pkill -9 apache

Oba vyššie uvedené príkazy zabijú proces apache. Potvrdenie pomocou pgrep znova príkaz.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Ako pgrep príkaz nevracia žiadny výstup, dokazuje, že proces apache bol zabitý.

Záver

V tomto návode sme sa dozvedeli o pkill príkaz a ako sa používa na zabitie procesu priamo pomocou názvu procesu. Dozvedeli sme sa aj o pgrep príkaz, ktorý sa používa na získanie ID procesu procesu spusteného ktorýmkoľvek konkrétnym používateľom. The pgrep príkaz nám umožňuje krížovú kontrolu, či je proces zabitý.