Å drepe en prosess er noen ganger den eneste måten å bli kvitt den. Til tross for det harde navnet betyr "å drepe" en prosess bare "å tvinge den til å slutte." Slik gjør du det fra Linux- eller macOS-kommandolinjen.
Hva er en prosess?
Å kjøre programmer som nettleseren din, bakgrunnsprosesser knyttet til skrivebordsmiljøet og Linux-systemtjenester er alle prosesser.
Du kan dele prosesser i to grupper:
- Forgrunnsprosesser er de som er startet eller lansert av en bruker. De kan være i et terminalvindu, eller de kan være en grafisk applikasjon.
- Bakgrunnsprosesser er alle prosessene som startes automatisk og ikke har noen interaksjon med brukerne. De forventer ikke innspill fra brukere og presenterer heller ikke resultater eller utdata for dem. Bakgrunnsprosesser er ting som tjenester og demoner.
Hvis forgrunnsprosessene er fronten for teaterpersonalet og skuespillerne, er bakgrunnsprosessene bak kulissene "bak kulissene".
Når prosesser oppfører seg feil eller ikke fungerer, kan de hogge for mye CPU-tid, konsumere RAM, eller gå inn i en tett beregningsløyfe og ikke svare. Grafiske applikasjoner kan nekte å svare på museklikk. Terminalapplikasjoner vil kanskje aldri returnere deg til ledeteksten.
Det humane svaret
Å "drepe" en prosess betyr bare "å tvinge prosessen til å slutte." Dette kan være nødvendig hvis prosessen nekter å svare.
Linux gir
drepe
,
pkill
, og
Drep alle
kommandoer som lar deg gjøre nettopp det. Disse kommandoene kan brukes med alle typer prosesser, grafisk eller kommandolinje, forgrunn eller bakgrunn.
Drepskommandoen
Å bruke
drepe
, må du vite prosess-ID (PID) for prosessen du vil avslutte. De
ps
kommandoen kan brukes til å finne PID for en prosess.
Å ha
ps
søke gjennom alle prosessene bruker
-er
(alle prosesser) alternativ. Rør utgangen
mindre
er tilrådelig, kommer det til å bli ganske mye av det. Type
ps
, et rom,
-er
, et rom,
|
(et rørkarakter), et annet mellomrom og skriv deretter
mindre
. Trykk Enter for å utføre kommandoen.
ps -e | mindre
Dette vil gi deg en prosessoppføring som ser ut som skjermbildet nedenfor. Du kan søke fremover i
mindre
bruker
/
tasten, og du kan søke bakover ved å bruke
?
nøkkel.
For å komme inn i prosessen du er interessert i, rør utgangen fra
ps
gjennom
grep
og spesifiser navnet - eller deler av navnet - på prosessen.
ps -e | grep shutter
Når du har funnet PID-en for prosessen du vil avslutte, send den til
drepe
kommando som parameter. Å avslutte
lukker
prosess identifisert av forrige kommando, bruk denne kommandoen:
drepe 2099
De
drepe
kommandoen er en stille snikmorder - den gir deg ingen tilbakemeldinger hvis den var vellykket.
Pkill-kommandoen
De
pkill
kommandoen lar deg drepe en prosess - eller prosesser - ved navn. Du trenger ikke å identifisere prosessen etter PID. Å bruke
pkill
du oppgir et søkeord som
pkill
bruker for å sjekke mot listen over kjørende prosesser. Matchingsprosesser avsluttes. Så du må være sikker på at du har det søkeordet stavet riktig.
Som sikkerhetsnett kan du bruke
pgrep
kommando
før
du bruker
pkill
kommando. De
pgrep
kommando godtar også et søkeord. Den vil vise PID for hver prosess som samsvarer med søkeordet. Dette er trygt fordi
pgrep
vil ikke utstede noe drepsignal til prosessene, og hvis du skriver feil søkeordet, vil du ikke drepe en annen prosess ved en feiltakelse. Du kan sørge for at søkeordet er riktig gjennomtenkt før du sender det til
pkill
. Både
pkill
og
pgrep
behandle søkeordet på samme måte. Behandlingen deres er så lik at de
dele den samme mannssiden
.
La oss anta at det er en prosess med "subq" i navnet. Vi bruker
ps -u dave | grep
kommando om å ta en titt bak gardinen. Du kan se at "subq" vil matche den prosessen og den prosessen alene. Det var bare slik at du kan se hele navnet på prosessen.
ps -u dave | grep subq
La oss anta brukeren vår
har ikke
gjort det; alt de vet er at prosessnavnet inneholder understrengen "subq." De bruker
pgrep
for å sjekke at det bare er ett samsvar med søkeordet. De bruker deretter det søkeordet med
pkill
.
pgrep subq
pkill subq
Du kan bruke
pkill
å drepe flere prosesser samtidig. Her løper brukeren
pgrep
for å sjekke hvor mange prosesser Chrome har lansert. De bruker
pkill
å drepe dem alle. De sjekker deretter med
pgrep
at de alle er fjernet.
pgrep krom
pkill krom
pgrep krom
Hvis flere prosesser med samme navn er i gang, men du ikke vil drepe dem alle, kan du bruke
pgrep
med
-f
(kommandolinje) alternativ for å identifisere hvilken prosess som er. Et enkelt eksempel vil være to
ping
prosesser. Du vil drepe en av dem, men ikke den andre. Du kan bruke kommandolinjene til å skille mellom dem. Legg merke til bruken av anførselstegn for å pakke inn kommandolinjeparameteren.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Killall-kommandoen
Advarsel
: I operativsystemene Solaris og OpenIndiana
Drep alle
kommando vil
drep alle prosessene som tilhører deg
. Hvis er rot eller hvis du har utstedt
sudo killall
du vil starte datamaskinen på nytt! Under undersøkelsen av denne artikkelen ble denne oppførselen bekreftet med den nyeste versjonen av OpenIndiana Hipster 2018.10.
De
Drep alle
kommando
fungerer på en lignende måte
til
pkill
kommando, men med en spesifikk forskjell. I stedet for å sende et søkeord til kommandoen, må du oppgi det nøyaktige prosessnavnet.
Du kan ikke oppgi en delvis samsvar med et prosessnavn; du må oppgi hele prosessnavnet, som vist:
killall shutt
killall lukker
De
-Y
(yngre enn) alternativet lar deg drepe prosesser som har kjørt i
mindre
enn en spesifisert periode. Perioden er gitt i tall etterfulgt av en av disse enhetene:
- s (sekunder)
- m (minutter)
- h (timer)
- d (dager)
- w (uker)
- M (måneder, merknad, store bokstaver “M”)
- y (år)
Å drepe en prosess som kalles
mor
som nettopp har blitt lansert og etterlater eldre forekomster av
mor
kjører, kan du bruke følgende parametere med
Drep alle
, hvis du hadde reagert innen to minutter:
Mink meg eller meg
De
-De
(eldre enn) alternativet lar deg drepe prosesser som har kjørt i lengre tid enn en spesifisert periode. Denne kommandoen vil drepe alle
ssh
tilkoblinger som har kjørt i mer enn en dag:
killall -o 1d sshd
Don't Be Too Trigger Happy
Disse kommandoene lar deg identifisere og avslutte feilaktige prosesser med nøyaktighet og sikkerhet riktig.
Vær alltid forsiktig. Først må du sørge for at prosessen du er i ferd med å drepe er virkelig den du vil ha. For det andre, dobbeltsjekk - vær forsiktig og sørg for at den målrettede prosessen er den du vil avslutte. Fortsett med å avslutte prosessen når du er fornøyd.