Hvordan drepe en prosess i Linux

Hvordan drepe en prosess i Linux
Hvert Linux -operativsystem kommer med Kill -kommandoen. Det eneste formålet med dette verktøyet er å avslutte en målprosess. Det er et kraftig verktøy som gjør Linux ganske allsidig, spesielt innen server- og bedriftsfelt der en stor endring/oppdatering kan tre i kraft uten å starte hele maskinen på nytt. I denne artikkelen vil jeg vise frem hvordan du dreper en prosess ved hjelp av drepe, Pkill og Drep alle.

Drepe en prosess

For å drepe en prosess, bruker vi en håndfull verktøy: drepe, Pkill, og Drep alle. Alle fungerer i utgangspunktet på samme måte.

Disse verktøyene avslutter ikke prosessen selv. I stedet sender de et utpekt signal til målprosessen eller prosessgruppene. Hvis du ikke spesifiserte noe spesifikt signal, sendes SigTerm som standardsignalet. Imidlertid er det en rekke støttede signaler, for eksempel Sigkill, sukk osv.

Her er den grunnleggende kommandostrukturen for drepe, Pkill og Drep alle.

$ Kill
$ pkill
$ Killall

Når det er mulig, anbefales det å bruke drepe.

Drepe, Pkill og Drep alle lokasjoner

Kill er standardkommandoen for å avslutte en prosess.

$ Kill --hjelp

Det kjøres fra /usr /bin katalog.

$ som dreper

Fordelen er at den også gir tilgang til Pkill, en annen kommando som ligner på Kill som tillater termineringsprosess basert på deres navn.

$ pkill -hjelp
$ hvilken pkill

Noen apper kjører flere prosesser med samme kjørbare. Hvis du vil avslutte en rekke prosesser med samme navn, bruk Killall -verktøyet.

$ Killall -Hjelp
$ som dreper

Liste over alle løpsprosessene

Den aller første oppgaven er å identifisere PID (prosessidentifikasjonsnummer) og/eller prosessnavnet du vil avslutte. For dette eksemplet vil jeg bruke Firefox som målprosess for å avslutte. Kjør følgende kommando for å liste opp alle løpsprosessene på systemet.

$ ps -a

For de fleste av oppgavene må vi kjenne PID -en i målprosessen. Imidlertid er det mer egnet i visse situasjoner.

Hvis du vet det nøyaktige navnet på målprosessen, kan du direkte få PID ved hjelp av Pidof.

$ pidof

Et annet interessant verktøy for å ta tak i informasjonen om målprosessen er PGREP. Det er spesielt designet for formålet.

$ pgrep

Drep signaler

La oss nå se på signalene som Kill Tools støtter. Det er en enorm liste. Selvfølgelig er ikke alle av dem nødvendige for hver eneste situasjon. Faktisk krever de fleste av situasjonene bare en håndfull signaler.

La oss først se på listen som dreper støtter.

$ Kill -L

Det er to måter å definere hvilket signal du vil sende. Du kan enten bruke hele signalnavnet eller dets tilsvarende verdi.

$ Kill -

Eller,

$ Kill -

De mest populære signalene er Sighup (1), Sigkill (9) og Sigterm (15). Generelt er sigterm standard og tryggeste måte å avslutte en målprosess.

Når det gjelder Pkill, er det støttede signalet det samme som Kill. I tilfelle av Killall er imidlertid antall støttede signaler og signalnavnene forskjellige.

$ Killall -L

Drepe en prosess

For å drepe en prosess, trenger vi PID i den målprosessen. Forutsatt at du har PID, kjør følgende kommando for å drepe den.

$ Kill

Her vil Kill sende standardsignalet Sigterm til PID (S). Hvis du ønsket å avslutte flere prosesser, kan du nevne alle pidene atskilt med plass.

$ Kill

La oss spesifisere hvilket signal du vil sende til målet.

Ønsker å avslutte en prosess ved å bruke navnet sitt bare? Bruk pkill.

$ pkill

I noen tilfeller kan en bestemt applikasjon ha for mange prosesser som kjører. Å skrive alle disse PID-ene er tidkrevende og slitsomme. I slike scenarier bruker vi Killall -verktøyet. Det er ganske likt å drepe, men det fungerer med prosessnavn.

$ Killall

Når du for eksempel kjører Firefox, starter det en håndfull prosesser. For å drepe dem alle på en gang, kjør denne kommandoen.

$ Killall Firefox

Ønsker å avslutte alle prosessene som kjører under en bestemt bruker? Killall kan gjøre jobben, ikke noe problem. Vær forsiktig når du kjører denne, da den kan bryte ned systemet og skape andre problemer. Det vil ikke fungere hvis du prøver å avslutte prosesser som kjører under en annen bruker med høyere privilegium.

$ Killall -U

Tillatelsekonflikt

De iboende egenskapene til Linux -brukerhierarkiet gjelder også når du er i ferd med å avslutte en applikasjon. En bruker kan ikke avslutte prosesser som kjører med høyere privilegium, bare en prosess med like/lavere privilegium. Dessuten kan en bruker ikke manipulere prosesser som kjører under forskjellige bruker.

La oss for eksempel vurdere ja -kommandoen. Hvis det kalles den nåværende brukeren, kan det enkelt avsluttes ved hjelp av Kill.

$ Kill ja

Nå, hva om ja løp under rot? Å ringe Kill som den nåværende brukeren vil ikke fungere.

Tilsvarende, hvis en prosess kjørte under en annen bruker, kan du ikke avslutte den fra en annen brukerkonto.

Siste tanker

I denne artikkelen ble bare det grunnleggende og vanlig bruk av disse kommandoene vist frem. Disse drepeverktøyene er i stand til mer enn det. For å ha dyptgående kunnskap om evnene til ethvert verktøy, anbefaler jeg å sjekke ut mannssiden.

$ mann drepe
$ mann pkill

Nyt!