Hvordan drepe en prosess i Linux

How Kill Process 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 på server- og bedriftsfelt der en større endring/oppdatering kan tre i kraft uten å starte hele maskinen på nytt. I denne artikkelen skal jeg vise hvordan du dreper en prosess ved hjelp av drepe , pkill og Drep alle .

Dreper 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 angitt signal til målprosessen eller prosessgruppene. Hvis du ikke spesifiserte et bestemt signal, sendes SIGTERM som standardsignal. Imidlertid er det en rekke støttede signaler, for eksempel SIGKILL, SIGHUP etc.



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



$drepe <signal_eller_alternativer> <PID(s)>
$ pkill<signal_eller_alternativer> <prosessnavn>
$Drep alle <alternativ> <prosessnavn>

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





Drepe , pkill og Drep alle steder

Kill er standardkommandoen for å avslutte en prosess.



$drepe --hjelp

Den kjøres fra /usr /bin -katalogen.

$hvilken drepe

Fordelen er at den også gir tilgang til pkill, en annen kommando som ligner på kill som gjør det mulig å avslutte prosessen basert på navnet deres.

$pkill--hjelp

$hvilkenpkill

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

$Drep alle --hjelp

$hvilken Drep alle

Liste over alle prosessene som kjører

Den aller første oppgaven er å identifisere PID (prosessidentifikasjonsnummer) og/eller prosessnavnet du vil avslutte. I dette eksemplet bruker jeg Firefox som målprosess for å avslutte. Kjør følgende kommando for å vise alle kjørende prosesser på systemet.

$ps -TIL

For de fleste oppgavene må vi kjenne PID for målprosessen. Men i visse situasjoner er bruk av prosessnavnet mer egnet.

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

$pidof <prosessnavn>

Et annet interessant verktøy for å hente informasjonen om målprosessen er pgrep. Den er spesielt designet for formålet.

$pgrep<alternativ> <prosessnavn>

Drepe signaler

La oss nå se på signalene som drap -verktøyene støtter. Det er en enorm liste. Selvfølgelig er ikke alle nødvendige for hver enkelt situasjon. Faktisk krever de fleste situasjonene bare en håndfull signaler.

La oss først ta en titt på listen som dreper støtter.

$drepe -de

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

$drepe-<signal> <PID>

Eller,

$drepe-<signalverdi> <PID>

De mest populære signalene er SIGHUP (1), SIGKILL (9) og SIGTERM (15). Generelt er SIGTERM standard og sikreste 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 antallet støttede signaler og signalnavnene forskjellige.

$Drep alle -de

Dreper en prosess

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

$drepe <alternativ> <PID>

Her vil kill sende standardsignalet SIGTERM til PID (ene). Hvis du ønsket å avslutte flere prosesser, nevner du alle PID -ene atskilt med mellomrom.

$drepe <alternativ> <PID_1> <PID_2>

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

Vil du avslutte en prosess bare med navnet? Bruk pkill.

$pkill<alternativ> <prosessnavn>

I noen tilfeller kan det hende at et bestemt program har for mange prosesser. Å skrive alle disse PID-ene er tidkrevende og slitsomt. I slike scenarier bruker vi killall -verktøyet. Det er ganske likt å drepe, men det fungerer med prosessnavn.

$Drep alle <alternativ> <prosessnavn>

For eksempel, når du kjører Firefox, starter den en håndfull prosesser. For å drepe dem alle samtidig, kjør denne kommandoen.

$Drep allefirefox

Vil du 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 det 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 rettigheter.

$Drep alle -u <bruker>

Tillatelseskonflikt

De iboende egenskapene til Linux -brukerhierarkiet gjelder også når du skal avslutte et program. En bruker kan ikke avslutte prosesser som kjører med høyere rettigheter, bare prosesser med like/lavere rettigheter. Dessuten kan en bruker ikke manipulere prosesser som kjøres under forskjellige brukere.

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

$drepe ja

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

På samme måte, 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 grunnleggende og vanlig bruk av disse kommandoene vist frem. Disse drepeverktøyene er i stand til mer enn det. For å ha inngående kunnskap om evnene til et hvilket som helst verktøy, anbefaler jeg å sjekke mannssiden.

$Mann drepe

$Mannpkill

Nyt!