Hvordan drepe prosess etter navn i Linux

Tvinge avslutning av feilaktige prosesser ved å bruke disse Linux-kommandoene

For å forklare betydningen av en "prosess" i de enkleste ordene er at det er en kjørende forekomst av et hvilket som helst program eller program på systemet ditt. Det kan hende du kjører flere applikasjoner samtidig, for eksempel surfing, lytter til musikk som jobber på terminalen din osv. Det er mange bakgrunnsprosesser knyttet til disse applikasjonene som kjøres av brukeren.

Hver applikasjon eller et program som kjører på systemet ditt oppretter flere prosesser knyttet til din enkelt applikasjon. Noen ganger kan dette være et problem, og å bli kvitt disse prosessene er det eneste alternativet du har.

Å "drepe" en prosess er et nyttig alternativ Linux gir deg for å stoppe de pågående prosessene, enten det er en forgrunnsprosess eller en bakgrunnsprosess. I denne artikkelen vil vi gjennomgå kommandoene som drepe, pkill og Drep alle å tvinge avslutning av enhver prosess på et system.

Hvorfor drepe en prosess?

Det er viktig å forstå konseptet med å drepe en prosess før du går videre i denne opplæringen. Drap kan virke som en veldig brutal måte å uttrykke konseptet på, men hva det billedlig betyr er å avbryte en prosess med makt.

Hvorfor avbryte eller avslutte en pågående prosess? Når flere prosesser kjører i bakgrunnen, kan alle eller få av dem fungere feil og kan føre til at systemet ikke oppfører seg. Dette forsinker de pågående oppgavene dine ettersom feilfunksjonsprosessen kan fryse systemet en stund.

Noen ganger ser det ut til å avslutte alle prosessene som ikke oppfører seg å være det eneste alternativet for å gjenopprette normaliteten på systemet ditt. Linux lar deg drepe en prosess ved å bruke pid eller prosessnavnet.

Bruker pgrep kommando

De fleste av Linux-brukerne er kjent med grep kommando. De pgrep kommandoen kan brukes på lignende linjer i grep.

pgrep kommandoen når den brukes, viser pid av den kjørende prosessen som spesifisert i kommandoen. Denne kommandoen vil vise seg å være svært nyttig når du bruker pkill kommando.

Generell syntaks:

pgrep [alternativer] [mønster]

Viktige alternativer tilgjengelig med pgrep kommando

AlternativBeskrivelse
-ulisteprosess-ID som eies av en bestemt bruker
-ctelle antall matchende prosesser
-JEGliste bare prosessnavn
-enliste hele banen til prosessnavnet

La oss demonstrere bruken av pgrep kommando ved hjelp av et eksempel.

pgrep -u gaurav gnome

Her ønsker vi å se pids av prosessnissen som eies av brukeren ‘gaurav’. Alternativ -u lar deg liste opp pids av prosessene som eies av en bestemt bruker. I dette tilfellet bruker gaurav.

Produksjon:

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

Når vi går videre med denne opplæringen, pgrep kommandoen vil hjelpe oss med å bekrefte om prosessen har blitt drept eller fortsatt kjører.

La oss nå gå til pkill kommandoen og dens utførelse.

Ved hjelp av pkill kommando

Du kan bruke pkill kommando i Linux for å drepe prosessen ved å bruke prosessnavnet. Selv om du ikke kjenner pid av en eller annen prosess, selv da kan du drepe den spesielle prosessen ved å bruke pkill kommando.

Prosessene kan spesifiseres med deres fullstendige navn eller delnavn mens du bruker pkill kommando. Selv om du skriver inn det delvise navnet på prosessen, vil den pkill kommandoen vil matche alle de kjørende prosessene med det samsvarende navnet du har skrevet inn i kommandoen.

Syntaks:

pkill [alternativer][process_name_pattern] 

Eksempel:

La oss vise prosessene som kjører for øyeblikket ved hjelp av topp kommando. Du kan også bruke ps kommando for å liste prosessene.

topp
topp - 14:24:02 opp 3:12, 1 bruker, belastningsgjennomsnitt: 0,29, 0,48, 0,58 Oppgaver: 221 totalt, 1 løper, 172 sover, 0 stoppet, 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 totalt, 610456 gratis, 2233152 brukt, 1084632 buff/cache KiB 7300 totalt: 8,48 brukt 8,483 gratis: 8,48 totalt. 1187268 nytte Mem PID BRUKER 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 rot 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 722 480 25 048 18 272 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 Nettinnhold 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Nettinnhold 16007 gaurav 20 0 41944 3780 3106 0 R 1.08 topp: 

Ved hjelp av topp kommandoen vil vise flere prosesser på terminalen din. La oss prøve å vise prosessen med et bestemt navn. Vi vil bruke grep kommando for å vise en prosess hvis navn samsvarer med strengen 'mongo'.

topp | grep -i mongo

Merk: Her har jeg brukt -i-alternativet for å gjøre søket ufølsomt for store og små bokstaver.

Utdataene fra denne kommandoen vil vise prosessene som samsvarer med navnet 'mongo'

 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,22 mongod 1158 mongodb 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 mongodb 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,36 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,7 0,1 1: 03,40 mongod 1158 mongodb 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0.7 0.1 1: 03,45 mongod 1158 mongodb 20 0 288 564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 mongodb 20 0 288 564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 mongodb 20 0 288 564 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

Nå skal vi bruke pkill kommando for å drepe prosessen kalt 'mongo'.

pkill mongo

Denne kommandoen vil nå drepe prosessen mongo. Vi kan bekrefte om prosessen har blitt tvunget til å avslutte ved å bruke pgrep kommando som viser pid av den kjørende prosessen i henhold til kriteriene spesifisert av brukeren.

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

Denne kommandoen vil ikke returnere noen verdi. Dette bekrefter at prosessen "mongo" nå er drept ved hjelp av pkill kommando.

Alternativer som ofte brukes med pkill kommando

Mens du bruker pkill kommandoen vil vi trenge de nevnte alternativene for riktig og uanstrengt bruk av pkill kommando.

AlternativerBeskrivelse
-fmatch mot fullstendige argumenter, inkludert mellomrom, anførselstegn, spesialtegn
-uå informere pkill-prosessen for å matche prosessen som kjøres av den angitte brukeren
-1laster inn prosessen på nytt
-9dreper prosessen
-15avbryter grasiøst en prosess

La oss se enda et eksempel på pkill kommando ved å bruke -f alternativ.

Det er to kommandoer som utføres på terminalen som vist nedenfor.

ping bbc.com ping youtube.com

Begge prosessene er initiert av ping kommando. Anta nå at vi ønsker å avslutte bare én prosess "ping youtube.com", så må vi bruke -f alternativet med pkill kommando som dreper en prosess med et spesifikt navn inkludert mellomrom og sitater fra prosessnavnet.

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 med data. 64 byte fra bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30,9 ms 64 byte fra bom12s08-in-f14.1e100.2se = 0.27 .2se (1427) =117 tid=121 ms 64 byte fra bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86.5 ms 64 byte fra bom12s08-i-16.04.net (16.204.net (16.204.net) ): icmp_seq=207 ttl=117 time=105 ms Avsluttet gaurav@ubuntu:~$ 

Her, "ping youtube.com"-prosessen er nå drept og "ping bbc.com” kjører fortsatt på terminalen.

I tilfelle, hvis vi hadde brukt pkill ping kommando, ville det ha drept begge ping prosesser, noe som er uønsket.

Signaler brukt med pkill kommando

pkill tvinger en prosess til å avslutte ved å sende et spesifikt signal til den prosessen. Det er tre mulige signaler som pkill kommando kan sendes til prosessen avhengig av kommandoen som brukeren gir.

Følgende er listen over tilgjengelige signaler.

SignalSpesifikasjon
1(HUP)laster den spesifiserte prosessen på nytt
9 (DREPE)dreper den spesifiserte prosessen
15 (BEGREP)stopper eller avbryter den spesifiserte prosessen forsiktig

For denne opplæringen vil vi stole sterkt på DREPE signal. La oss gå gjennom noen eksempler for å forstå det bedre.

Bruker pgrep kommando for å få pid samsvarer med navnet apache.

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

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

pkill -9 apache

Begge kommandoene vist ovenfor vil drepe prosessen apache. Bekrefter med pgrep kommando igjen.

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

Som pgrep kommandoen returnerer ingen utdata, beviser at prosessen apache har blitt drept.

Konklusjon

I denne opplæringen lærte vi om pkill kommandoen og hvordan den brukes til å drepe prosessen ved å bruke prosessnavnet direkte. Vi lærte også om pgrep kommando som brukes til å hente prosess-ID-en til prosessen som kjøres av en spesifikk bruker. De pgrep kommando lar oss krysssjekke om prosessen er drept.