Hur man dödar process efter namn i Linux

Tvångsavsluta processer som inte beter sig med dessa Linux-kommandon

För att förklara innebörden av en "process" i de enklaste orden är att det är en körande instans av alla program eller program på ditt system. Du kanske kör flera applikationer samtidigt som att surfa, lyssna på musik som arbetar på din terminal, etc. Det finns många bakgrundsprocesser som är associerade med dessa applikationer som körs av användaren.

Varje applikation eller ett program som körs på ditt system skapar flera processer associerade med din enda applikation. Ibland kan detta vara ett problem och att bli av med dessa processer är det enda alternativet du har.

Att "döda" en process är ett användbart alternativ Linux ger dig för att stoppa de pågående processerna, vare sig det är en förgrundsprocess eller en bakgrundsprocess. I den här artikeln kommer vi att granska kommandona som döda, pkill och döda alla att tvinga avbryta någon process på ett system.

Varför döda en process?

Att förstå konceptet med att döda en process är viktigt innan du går vidare i denna handledning. Att döda kan tyckas vara ett väldigt brutalt sätt att uttrycka konceptet, men vad det bildligt betyder är att med våld avbryta en process.

Varför nu avbryta eller avsluta en pågående process? När flera processer körs i bakgrunden kan alla eller få av dem fungera felaktigt och kan orsaka att ditt system inte beter sig. Detta fördröjer dina pågående uppgifter eftersom den felaktiga processen kan frysa ditt system ett tag.

Ibland tycks att avsluta alla processer som inte fungerar som det enda alternativet för att återställa normaliteten på ditt system. Linux låter dig döda en process med hjälp av pid eller processnamnet.

Använda pgrep kommando

De flesta av Linux-användarna är bekanta med grep kommando. De pgrep kommandot kan användas på liknande rader i grep.

pgrep kommandot när det används, visar pid av den pågående processen enligt kommandot. Detta kommando kommer att visa sig vara mycket användbart när du använder pkill kommando.

Allmän syntax:

pgrep [alternativ] [mönster]

Viktiga alternativ tillgängliga med pgrep kommando

AlternativBeskrivning
-ulistprocess-id som ägs av en specifik användare
-cräkna antalet matchningsprocesser
-Jaglista endast processnamn
-alista hela sökvägen till processnamnet

Låt oss demonstrera användningen av pgrep kommandot med hjälp av ett exempel.

pgrep -u gaurav gnome

Här vill vi se pids av processgnomen som ägs av användaren 'gaurav'. Alternativ -u låter dig lista pids av processerna som ägs av en specifik användare. I det här fallet, användaren gaurav.

Produktion:

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

När vi går vidare med denna handledning, pgrep kommandot hjälper oss att bekräfta om processen har dödats eller fortfarande körs.

Låt oss nu gå till pkill kommando och dess utförande.

Använder sig av pkill kommando

Du kan använda pkill kommando i Linux för att döda processen med hjälp av processnamnet. Även om du inte känner till pid av någon process, även då kan du döda just den processen med hjälp av pkill kommando.

Processerna kan specificeras med deras fullständiga namn eller delnamnet när du använder pkill kommando. Även om du anger det partiella namnet på processen, pkill kommandot kommer att matcha alla pågående processer med det matchande namnet som du har angett i kommandot.

Syntax:

pkill [alternativ][process_name_pattern] 

Exempel:

Låt oss visa de processer som för närvarande körs med hjälp av topp kommando. Du kan också använda ps kommando för att lista processerna.

topp
topp - 14:24:02 upp 3:12, 1 användare, belastningsmedelvärde: 0,29, 0,48, 0,58 Uppgifter: 221 totalt, 1 löpning, 172 sovande, 0 stoppade, 1 zombie %Cpu(s): 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 totalt, 610456 gratis, 2233152 begagnat, 1084632 buff/cache KiB 702 3 totalt 8,48 begagnade 8,48 3 708 408 totalt. 1187268 utnyttja Mem PID USER PR NI VIRT RES SHR S% CPU% MEM TID + KOMMANDO 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 45.024 S 1,7 2,8 3: 14,85 gnome-skal 1197 rot 20 0 1.039.612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 couchdb 20 0 3.772.396 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 Web Content 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01.21 Web Content 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 0 :59,90 Webbinnehåll 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0:48,20 Webbinnehåll 16007 gaurav 20 0 41944 3780 3116 0,08 R 1.08. 

Använder sig av topp kommandot kommer att visa flera processer på din terminal. Låt oss försöka visa processen med ett visst namn. Vi kommer att använda grep kommando för att visa en process vars namn matchar strängen "mongo".

topp | grep -i mongo

Notera: Här har jag använt alternativet -i för att göra sökningen skiftlägesokänslig.

Utdata från detta kommando kommer att visa processerna som matchar namnet "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

Nu kommer vi att använda pkill kommando för att döda processen som heter 'mongo'.

pkill mongo

Detta kommando kommer nu att döda processen mongo. Vi kan bekräfta om processen har tvingats avslutas genom att använda pgrep kommando som visar pid av den pågående processen enligt de kriterier som anges av användaren.

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

Detta kommando returnerar inget värde. Detta bekräftar att processen "mongo" nu dödas med hjälp av pkill kommando.

Alternativ som ofta används med pkill kommando

När du använder pkill kommando vi kommer att behöva de nämnda alternativen för korrekt och enkel användning av pkill kommando.

alternativBeskrivning
-fmatcha mot fullständiga argument inklusive mellanslag, citattecken, specialtecken
-uför att informera pkill-processen för att matcha processen som körs av den angivna användaren
-1laddar om processen
-9dödar processen
-15graciöst avbryter en process

Låt oss se ytterligare ett exempel på pkill kommandot med hjälp av -f alternativ.

Det finns två kommandon som för närvarande körs på terminalen som visas nedan.

ping bbc.com ping youtube.com

Båda processerna initieras av ping kommando. Anta nu att vi bara vill avsluta en process "ping youtube.com", då måste vi använda -f alternativet med pkill kommando som dödar en process med ett specifikt namn inklusive mellanslag och citattecken från processnamnet.

Kommando:

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

Resultat:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) byte data. 64 byte från bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 byte från bom12s08-in-f14.1e100.25 = 0.27 .2se (1427) =117 tid=121 ms 64 byte från bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 tid=86,5 ms 64 byte från bom12s08-i-16.02.net (16.02.net ): icmp_seq=207 ttl=117 time=105 ms Avslutad gaurav@ubuntu:~$ 

Här, "pinga youtube.com”-processen är nu dödad och ”ping bbc.com” körs fortfarande på terminalen.

I fallet, om vi hade använt pkill ping kommando, skulle det ha dödat båda ping processer, vilket är oönskat.

Signaler som används med pkill kommando

pkill tvingar en process att avsluta genom att skicka en specifik signal till den processen. Det finns tre möjliga signaler som pkill kommando kan skickas till processen beroende på kommandot som användaren ger.

Följande är listan över tillgängliga signaler.

SignalSpecifikation
1(HUP)laddar om den angivna processen
9 (DÖDA)dödar den angivna processen
15 (TERMIN)stoppar eller avbryter försiktigt den angivna processen

För denna handledning kommer vi att förlita oss mycket på DÖDA signal. Låt oss gå igenom några exempel för att förstå det bättre.

Använda pgrep kommandot för att hämta pid matchning mot namnet apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -DÖDA apache

ELLER du kan också använda kommandot med siffror (t.ex. 1, 9, 15)

pkill -9 apache

Båda kommandona som visas ovan kommer att döda processen apache. Bekräfta med pgrep kommandot igen.

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

Som den pgrep kommandot returnerar ingen utdata, bevisar att processen apache har dödats.

Slutsats

I den här handledningen lärde vi oss om pkill kommandot och hur det används för att döda processen med hjälp av processnamnet direkt. Vi lärde oss också om pgrep kommando som används för att hämta process-id för processen som körs av en specifik användare. De pgrep kommandot låter oss krysskolla om processen är dödad.