Jak zabít proces podle názvu v Linuxu

Vynutit ukončení neslušných procesů pomocí těchto příkazů Linuxu

Pro vysvětlení významu ‚procesu‘ nejjednoduššími slovy je to, že jde o spuštěnou instanci jakékoli aplikace nebo programu ve vašem systému. Můžete současně spouštět více aplikací, jako je procházení, poslech hudby pracující na vašem terminálu atd. S těmito aplikacemi je spojeno mnoho procesů na pozadí, které spouští uživatel.

Každá aplikace nebo program, který běží na vašem systému, vytváří více procesů spojených s vaší jedinou aplikací. Někdy to může být problém a zbavit se těchto procesů je jediná možnost, kterou máte.

„Zabití“ procesu je jednou z užitečných možností, kterou vám Linux poskytuje, jak zastavit probíhající procesy, ať už jde o proces v popředí nebo proces na pozadí. V tomto článku se podíváme na příkazy jako zabít, pkill a zabít všechny vynutit ukončení jakéhokoli procesu v systému.

Proč zabíjet proces?

Než budete pokračovat v tomto tutoriálu, je důležité porozumět konceptu zabíjení procesu. Zabíjení se může zdát velmi brutální způsob, jak vyjádřit tento koncept, ale co to obrazně znamená, je násilně přerušit proces.

Proč přerušit nebo ukončit probíhající proces? Když na pozadí běží více procesů, všechny nebo jen málo z nich může selhat a způsobit nesprávné chování systému. To zdržuje vaše probíhající úkoly, protože nefunkční proces může na chvíli zamrznout váš systém.

Někdy se zdá, že ukončení všech neslušných procesů je jedinou možností, jak obnovit normální stav vašeho systému. Linux vám umožňuje zabít proces pomocí pid nebo název procesu.

Za použití pgrep příkaz

Většina uživatelů Linuxu zná grep příkaz. The pgrep příkaz lze použít na podobných řádcích grep.

pgrep při použití příkazu zobrazí pid běžícího procesu, jak je uvedeno v příkazu. Tento příkaz bude velmi užitečný při používání pkill příkaz.

Obecná syntaxe:

pgrep [možnosti] [vzor]

Důležité možnosti dostupné s pgrep příkaz

VolbaPopis
-uvypsat ID procesu vlastněné konkrétním uživatelem
-Cspočítat počet odpovídajících procesů
-Jáuveďte pouze názvy procesů
-Avypsat úplnou cestu názvu procesu

Pojďme si ukázat použití pgrep příkaz pomocí příkladu.

pgrep -u gaurav gnóm

Zde si přejeme vidět pids procesního gnome, který vlastní uživatel „gaurav“. Volba -u umožňuje vypsat pids procesů vlastněných konkrétním uživatelem. V tomto případě uživatel gaurav.

Výstup:

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

Jak pokračujeme v tomto tutoriálu, pgrep příkaz nám pomůže potvrdit, zda byl proces zabit nebo stále běží.

Přejděme nyní k pkill příkaz a jeho provedení.

Použitím pkill příkaz

Můžete použít pkill příkaz v Linuxu k ukončení procesu pomocí názvu procesu. I když neznáte pid nějakého procesu, dokonce i potom můžete tento konkrétní proces zabít pomocí pkill příkaz.

Procesy lze zadat s jejich úplným názvem nebo částečným názvem při použití pkill příkaz. I když zadáte částečný název procesu, pkill příkaz bude odpovídat všem běžícím procesům s odpovídajícím názvem, který jste zadali v příkazu.

Syntax:

pkill [options][process_name_pattern] 

Příklad:

Zobrazme aktuálně běžící procesy pomocí horní příkaz. Můžete také použít ps příkaz pro výpis procesů.

horní
nahoře - 14:24:02 nahoru 3:12, 1 uživatel, průměr zatížení: 0,29, 0,48, 0,58 Úkoly: 221 celkem, 1 běží, 172 spící, 0 zastaveno, 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 celkem, 610456 zdarma, 2233152 použitých, 1084632 zdarma použito 378 KiB celkem 378 834 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 kořen 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 32116 R 0 

Použitím horní příkaz zobrazí více procesů na vašem terminálu. Pokusme se zobrazit proces s konkrétním názvem. Budeme používat grep příkaz k zobrazení procesu, jehož název odpovídá řetězci „mongo“.

nahoru | grep -i mongo

Poznámka: Zde jsem použil volbu -i, aby vyhledávání nerozlišovalo malá a velká písmena.

Výstup tohoto příkazu zobrazí procesy odpovídající 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

Nyní použijeme pkill příkaz zabít proces s názvem „mongo“.

pkill mongo

Tento příkaz nyní zabije proces mongo. Můžeme potvrdit, zda byl proces nucen ukončit pomocí pgrep příkaz, který zobrazí pid běžícího procesu podle kritérií zadaných uživatelem.

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

Tento příkaz nevrátí žádnou hodnotu. To potvrzuje, že proces „mongo“ je nyní zabit pomocí pkill příkaz.

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

Při používání pkill Pro správné a snadné použití příkazu budeme potřebovat zmíněné možnosti pkill příkaz.

MožnostiPopis
-Fshodu s úplnými argumenty včetně mezer, uvozovek, speciálních znaků
-uinformovat proces pkill, aby odpovídal procesu, který spouští určený uživatel
-1znovu načte proces
-9zabíjí proces
-15elegantně přeruší proces

Podívejme se ještě na jeden příklad pkill příkaz pomocí -F volba.

Na terminálu se aktuálně provádějí dva příkazy, jak je znázorněno níže.

ping bbc.com ping youtube.com

Oba procesy jsou zahájeny ping příkaz. Nyní předpokládejme, že chceme ukončit pouze jeden proces „ping youtube.com“, pak musíme použít -F možnost s pkill příkaz, který zabije proces se specifickým názvem včetně mezer a uvozovek z názvu procesu.

Příkaz:

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

Výsledek:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bajtů dat. 64 bajtů z bom12s08-in-f14.1e100.net (142 250.67.206): icmp_seq=1 ttl=117 čas=30,9 ms 64 bajtů z bom12s08-in-f14.1e100.2506.q=2ic2506.q= =117 čas=121 ms 64 bajtů z bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 čas=86.5 ms 64 bajtů z bom12s1708-in-0.0.0.0.0. ): icmp_seq=207 ttl=117 čas=105 ms Ukončeno gaurav@ubuntu:~$ 

Zde, „ping na youtube.com“ proces je nyní zabit a “ping bbc.com” stále běží na terminálu.

V případě, že bychom použili pkill ping velení, zabilo by to oba ping procesů, což je nežádoucí.

Signály používané s pkill příkaz

pkill nutí proces ukončit odesláním specifického signálu tomuto procesu. Existují tři možné signály, které pkill příkaz by mohl poslat procesu v závislosti na příkazu, který uživatel zadá.

Následuje seznam dostupných signálů.

SignálSpecifikace
1(HUP)znovu načte zadaný proces
9 (ZABÍT)zabije zadaný proces
15 (OBDOBÍ)jemně zastaví nebo přeruší zadaný proces

V tomto tutoriálu se budeme silně spoléhat na ZABÍT signál. Pojďme si projít několik příkladů, abychom tomu lépe porozuměli.

Za použití pgrep příkaz k získání pid odpovídající názvu apache.

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

NEBO můžete také použít příkaz s čísly (např. 1, 9, 15)

pkill -9 apache

Oba výše uvedené příkazy zabijí proces apache. Potvrzení pomocí pgrep příkaz znovu.

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

Jako pgrep příkaz nevrací žádný výstup, dokazuje, že proces apache byl zabit.

Závěr

V tomto tutoriálu jsme se dozvěděli o pkill příkaz a jak se používá k ukončení procesu pomocí přímo názvu procesu. Dozvěděli jsme se také o pgrep příkaz, který se používá k načtení ID procesu procesu spuštěného jakýmkoli konkrétním uživatelem. The pgrep příkaz nám umožňuje křížovou kontrolu, zda je proces zabit.