Att döda en process är ibland det enda sättet att bli av med den. Trots det hårda namnet betyder "att döda" en process bara "att tvinga den att sluta." Så här gör du det från kommandoraden Linux eller macOS.
Vad är en process?
Att köra program som din webbläsare, bakgrundsprocesser associerade med din skrivbordsmiljö och Linux-systemtjänster är alla processer.
Du kan klumpa ihop processer i två grupper:
- Förgrundsprocesser är sådana som har startats eller startats av en användare. De kan vara i ett terminalfönster eller vara en grafisk applikation.
- Bakgrundsprocesser är alla de processer som startas automatiskt och inte har någon interaktion med användarna. De förväntar sig inte input från användare och presenterar inte heller resultat eller output för dem. Bakgrundsprocesser är saker som tjänster och demoner.
Om förgrundsprocesserna är framsidan av teaterpersonalen och skådespelarna, är bakgrundsprocesserna bakom scenen "bakom kulisserna".
När processer uppträder felaktigt eller inte fungerar kan de ta för mycket CPU-tid, konsumera ditt RAM-minne eller gå in i en tät beräkningsslinga och inte svara. Grafiska applikationer kan vägra att svara på musklick. Terminalapplikationer kommer kanske aldrig tillbaka till kommandotolken.
Det humana svaret
"Att döda" en process betyder bara "att tvinga processen att sluta." Detta kan vara nödvändigt om processen vägrar att svara.
Linux tillhandahåller
döda
,
pkill
och
döda alla
kommandon så att du kan göra just det. Dessa kommandon kan användas med alla typer av processer, grafisk eller kommandorad, förgrund eller bakgrund.
Dödkommandot
Att använda
döda
måste du känna till process-ID (PID) för den process du vill avsluta. De
ps
kommando kan användas för att hitta PID för en process.
Att ha
ps
sök igenom alla processer använder
-är
(alla processer) alternativ. Rör igenom utgången
mindre
rekommenderas, det kommer att bli en hel del av det. Typ
ps
, ett utrymme,
-är
, ett utrymme,
|
(ett rörkaraktär), ett annat mellanslag och skriv sedan
mindre
. Tryck på Enter för att utföra kommandot.
ps -e | mindre
Detta ger dig en processlista som liknar nedanstående skärmdump. Du kan söka framåt i
mindre
använda
/
och du kan söka bakåt med hjälp av
?
nyckel.
För att komma in i den process du är intresserad av, rör utdata från
ps
genom
grep
och ange namnet - eller en del av namnet - på processen.
ps -e | grep shutter
När du har hittat PID för processen du vill avsluta, skicka den till
döda
kommando som parameter. Att avsluta
slutare
process identifierad av föregående kommando, använd detta kommando:
döda 2099
De
döda
kommandot är ett tyst mördare - det ger dig ingen feedback om det lyckades.
Pkill-kommandot
De
pkill
kommandot låter dig döda en process - eller processer - efter namn. Du behöver inte identifiera processen med PID. Att använda
pkill
du anger ett sökord som
pkill
använder för att kontrollera mot listan över pågående processer. Matchningsprocesser avslutas. Så du måste vara säker på att du har den söktermen stavad korrekt.
Som skyddsnät kan du använda
pgrep
kommando
innan
du använder
pkill
kommando. De
pgrep
kommandot accepterar också en sökterm. Den visar PID för varje process som matchar söktermen. Detta är säkert för
pgrep
kommer inte att ge någon dödsignal till processerna, och om du skriver fel sökordet kommer du inte att döda en annan process av misstag. Du kan se till att söktermen är korrekt genomtänkt innan du skickar den till
pkill
. Både
pkill
och
pgrep
behandla söktermen på samma sätt. Deras behandling är så lika att de
dela samma mansida
.
Låt oss anta att det finns en process med "subq" i dess namn. Vi använder
ps -u dave | grep
kommando för att ta en titt bakom gardinen. Du kan se att "subq" kommer att matcha den processen och den processen ensam. Det var bara så att du kan se hela namnet på processen.
ps -u dave | grep subq
Låt oss anta vår användare
har inte
gjort det; allt de vet är att processnamnet innehåller understrängen "subq." De använder
pgrep
för att kontrollera att det bara finns en matchning med söktermen. De använder sedan sökordet med
pkill
.
pgrep subq
pkill subq
Du kan använda
pkill
att döda flera processer samtidigt. Här kör användaren
pgrep
för att kontrollera hur många processer Chrome har startat. De använder
pkill
att döda dem alla. De kollar sedan med
pgrep
att alla har tagits bort.
pgrep krom
pkill krom
pgrep krom
Om flera processer med samma namn körs men du inte vill döda dem alla kan du använda
pgrep
med
-f
(kommandorad) för att identifiera vilken process som är vilken. Ett enkelt exempel skulle vara två
ping
processer. Du vill döda en av dem men inte den andra. Du kan använda deras kommandorader för att skilja mellan dem. Notera användningen av citattecken för att radera kommandoradsparametern.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Killall-kommandot
Varning
: I operativsystemen Solaris och OpenIndiana
döda alla
kommandot kommer
döda alla de processer som tillhör dig
. Om är root eller om du har utfärdat
sudo killall
du startar om datorn! Under undersökningen av denna artikel bekräftades detta beteende med den senaste versionen av OpenIndiana Hipster 2018.10.
De
döda alla
kommando
fungerar på liknande sätt
till
pkill
kommando men med en specifik skillnad. I stället för att skicka en sökterm till kommandot måste du ange det exakta processnamnet.
Du kan inte ange en partiell matchning till ett processnamn. du måste ange hela processnamnet, som visas:
killall shutt
killall slutare
De
-Y
(yngre än) alternativet låter dig döda processer som har körts i
mindre
angiven period. Perioden anges i siffror följt av en av dessa enheter:
- s (sekunder)
- m (minuter)
- h (timmar)
- d (dagar)
- w (veckor)
- M (månader, not, kapital “M”)
- y (år)
Att döda en process som kallas
mor
som just har lanserats och lämnar alla äldre instanser av
mor
körning kan du använda följande parametrar med
döda alla
, om du skulle ha reagerat inom två minuter:
Minska mig eller mig
De
-De
(äldre än) alternativet låter dig döda processer som har körts längre än en viss period. Detta kommando kommer att döda alla
ssh
anslutningar som har körts längre än en dag:
killall -o 1d sshd
Var inte för Trigger Happy
Med dessa kommandon kan du identifiera och avsluta felaktiga processer med noggrannhet och säkerhet korrekt.
Var alltid försiktig. Kontrollera först att processen du ska döda verkligen är den du vill ha. För det andra, dubbelkontrollera - var försiktig och se till att den riktade processen är den du vill avsluta. Fortsätt med att avsluta processen när du är nöjd.