Sådan dræber du proces efter navn i Linux

Tving til at afslutte fejlagtige processer ved hjælp af disse Linux-kommandoer

For at forklare betydningen af ​​en 'proces' med de enkleste ord er, at det er en kørende forekomst af ethvert program eller program på dit system. Du kører muligvis flere applikationer samtidigt, såsom at browse, lytte til musik, der arbejder på din terminal, osv. Der er mange baggrundsprocesser forbundet med disse applikationer, som køres af brugeren.

Hver applikation eller et program, der kører på dit system, skaber flere processer, der er forbundet med din enkelt applikation. Nogle gange kan dette være et problem, og at slippe af med disse processer er den eneste mulighed, du har.

'At dræbe' en proces er en nyttig mulighed, Linux giver dig til at stoppe de igangværende processer, hvad enten det er en forgrundsproces eller en baggrundsproces. I denne artikel vil vi gennemgå kommandoerne som dræbe, pkill og Dræb alle at tvinge til at afslutte enhver proces på et system.

Hvorfor dræbe en proces?

Det er vigtigt at forstå konceptet med at dræbe en proces, før du går videre i denne tutorial. Drab kan virke som en meget brutal måde at udtrykke konceptet på, men hvad det i overført betydning betyder, er at afbryde en proces med magt.

Hvorfor nu afbryde eller afslutte en igangværende proces? Når flere processer kører i baggrunden, kan alle eller få af dem fungere forkert og kan få dit system til at opføre sig forkert. Dette forsinker dine igangværende opgaver, da den fejlfunktionelle proces kan fryse dit system i et stykke tid.

Nogle gange ser det ud til at afbryde alle de dårlige processer at være den eneste mulighed for at genoprette normaliteten på dit system. Linux giver dig mulighed for at dræbe en proces ved hjælp af pid eller procesnavnet.

Bruger pgrep kommando

De fleste af Linux-brugerne er bekendt med grep kommando. Det pgrep kommandoen kan bruges på lignende linjer i grep.

pgrep kommandoen, når den bruges, viser pid af den kørende proces som angivet i kommandoen. Denne kommando vil vise sig meget nyttig, mens du bruger pkill kommando.

Generel syntaks:

pgrep [indstillinger] [mønster]

Vigtige muligheder tilgængelige med pgrep kommando

MulighedBeskrivelse
-uliste proces-id ejet af en bestemt bruger
-cantal matchende processer
-JEGangiv kun procesnavne
-enliste den fulde sti til procesnavnet

Lad os demonstrere brugen af pgrep kommando ved hjælp af et eksempel.

pgrep -u gaurav gnome

Her ønsker vi at se pids af procesnissen, der ejes af brugeren 'gaurav'. Mulighed -u giver dig mulighed for at liste pids af de processer, der ejes af en bestemt bruger. I dette tilfælde bruger gaurav.

Produktion:

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

Mens vi går videre med denne tutorial, pgrep kommando vil hjælpe os med at bekræfte, om processen er blevet dræbt eller stadig kører.

Lad os nu gå til pkill kommando og dens udførelse.

Ved brug af pkill kommando

Du kan bruge pkill kommando i Linux for at dræbe processen ved hjælp af procesnavnet. Også selvom du ikke kender pid af en eller anden proces, selv da kan du dræbe den pågældende proces ved hjælp af pkill kommando.

Processerne kan specificeres med deres fulde navn eller det delvise navn, mens du bruger pkill kommando. Selvom du indtaster det delvise navn på processen, pkill kommando vil matche alle de kørende processer med det matchende navn, som du har indtastet i kommandoen.

Syntaks:

pkill [indstillinger][process_name_pattern] 

Eksempel:

Lad os vise de processer, der kører i øjeblikket ved hjælp af top kommando. Du kan også bruge ps kommando for at liste processerne.

top
top - 14:24:02 op 3:12, 1 bruger, belastningsgennemsnit: 0,29, 0,48, 0,58 Opgaver: 221 i alt, 1 kører, 172 sovende, 0 stoppede, 1 zombie %Cpu(er): 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 i alt, 610456 gratis, 2233152 brugt, 1084632 buff/cache KiB 3 704 i alt 8,48 brugt 8,48 8,48 gratis. 1187268 nytte Mem PID BRUGER 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 45.024 S 1.7 2.8 3: 14,85 gnome-shell 1197 rod 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 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 Webindhold 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Webindhold 16007 gaurav 20 0 41944 3780 3116 0.700 R 1.08. 

Ved brug af top kommando vil vise flere processer på din terminal. Lad os prøve at vise processen med et bestemt navn. Vi vil bruge grep kommando for at vise en proces, hvis navn matcher strengen 'mongo'.

top | grep -i mongo

Bemærk: Her har jeg brugt muligheden -i til at gøre søgningen ufølsom mellem store og små bogstaver.

Outputtet af denne kommando vil vise de processer, der matcher navnet '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 vil vi bruge pkill kommando til at dræbe processen kaldet 'mongo'.

pkill mongo

Denne kommando vil nu dræbe processen mongo. Vi kan bekræfte, om processen er blevet tvunget til at afslutte ved at bruge pgrep kommando, der viser pid af den kørende proces i henhold til de kriterier, der er angivet af brugeren.

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

Denne kommando returnerer ingen værdi. Dette bekræfter, at processen 'mongo' nu er dræbt ved hjælp af pkill kommando.

Indstillinger, der ofte bruges med pkill kommando

Mens du bruger pkill kommando vil vi få brug for de nævnte muligheder for korrekt og ubesværet brug af pkill kommando.

MulighederBeskrivelse
-fmatch mod fulde argumenter inklusive mellemrum, anførselstegn, specialtegn
-uat informere pkill-processen, så den matcher den proces, der køres af den angivne bruger
-1genindlæser processen
-9dræber processen
-15yndefuldt afbryder en proces

Lad os se endnu et eksempel på pkill kommando ved hjælp af -f mulighed.

Der er i øjeblikket to kommandoer, der udføres på terminalen som vist nedenfor.

ping bbc.com ping youtube.com

Begge processer er initieret af ping kommando. Antag nu, at vi kun ønsker at afslutte én proces "ping youtube.com", så skal vi bruge -f mulighed med pkill kommando, som dræber en proces med et specifikt navn, inklusive mellemrum og citater fra procesnavnet.

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) bytes data. 64 bytes fra bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 bytes fra bom12s08-in-f14.1e100.25 (1427.25) =117 tid=121 ms 64 bytes fra bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86.5 ms 64 bytes fra bom12s08-i-16.02.net (16.02.net ): icmp_seq=207 ttl=117 time=105 ms Afsluttet gaurav@ubuntu:~$ 

Her er "ping youtube.com”-processen er nu dræbt, og ”ping bbc.com” kører stadig på terminalen.

I tilfælde af, at hvis vi havde brugt pkill ping kommando, ville det have dræbt begge ping processer, hvilket er uønsket.

Signaler brugt med pkill kommando

pkill tvinger en proces til at stoppe ved at sende et specifikt signal til den proces. Der er tre mulige signaler, som pkill kommando kunne sende til processen afhængigt af den kommando, som brugeren giver.

Følgende er listen over tilgængelige signaler.

SignalSpecifikation
1(HUP)genindlæser den angivne proces
9 (DRÆBE)dræber den specificerede proces
15 (SEMESTER)stopper eller afbryder forsigtigt den angivne proces

Til denne tutorial vil vi i høj grad stole på DRÆBE signal. Lad os gennemgå nogle eksempler for at forstå det bedre.

Bruger pgrep kommando for at få pid matcher med navnet apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill -DRÆB apache

ELLER du kan også bruge kommandoen med tal (f.eks. 1, 9, 15)

pkill -9 apache

Begge kommandoer vist ovenfor vil dræbe processen apache. Bekræftelse med pgrep kommando igen.

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

Som pgrep kommandoen returnerer intet output, beviser at processen apache er blevet dræbt.

Konklusion

I denne tutorial lærte vi om pkill kommandoen og hvordan den bruges til at dræbe processen ved at bruge procesnavnet direkte. Vi lærte også om pgrep kommando, som bruges til at hente proces-id'et for processen, der køres af en specifik bruger. Det pgrep kommando giver os mulighed for at krydstjekke, om processen er dræbt.