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
Volba | Popis |
-u | vypsat ID procesu vlastněné konkrétním uživatelem |
-C | spočítat počet odpovídajících procesů |
-Já | uveďte pouze názvy procesů |
-A | vypsat ú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žnosti | Popis |
-F | shodu s úplnými argumenty včetně mezer, uvozovek, speciálních znaků |
-u | informovat proces pkill, aby odpovídal procesu, který spouští určený uživatel |
-1 | znovu načte proces |
-9 | zabíjí proces |
-15 | elegantně 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ál | Specifikace |
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.