intresserad av att lära sig mer om Linux-administration? Utforska dessa Linux – kurser.
- introduktion till Linux (LFS101x) – gratis
- Essentials of Linux System Administration (LFS201)
lär dig hur du dödar felaktiga processer i denna handledning från våra arkiv.
bild här: du har lanserat ett program (vare sig det är från din favorit skrivbordsmeny eller från kommandoraden) och du börjar använda den lanserade appen, bara för att få den att låsa upp dig, sluta utföra eller oväntat dö. Du försöker köra appen igen, men det visar sig att originalet aldrig riktigt stängs av helt.
vad gör du? Du dödar processen. Men hur? Tro det eller ej, din bästa insats ligger oftast inom kommandoraden. Tack och lov har Linux alla verktyg som behövs för att ge dig, användaren, att döda en felaktig process. Men innan du omedelbart startar det kommandot för att döda processen måste du först veta vad processen är. Hur tar du hand om denna skiktade uppgift? Det är faktiskt ganska enkelt … när du vet verktygen till ditt förfogande.
Låt mig presentera dig för nämnda verktyg.
stegen jag ska beskriva kommer att fungera på nästan varje Linux-distribution, oavsett om det är ett skrivbord eller en server. Jag kommer att hantera strikt kommandoraden, så öppna din terminal och förbered dig på att skriva.
lokalisera processen
det första steget i att döda den svarande processen är att hitta den. Det finns två kommandon jag använder för att hitta en process: top och ps. Top är ett verktyg som varje administratör bör lära känna. Med top får du en fullständig lista över pågående process. Från kommandoraden, fråga överst för att se en lista över dina processer som körs (Figur 1).
från den här listan ser du lite ganska viktig information. Säg till exempel att Chrome inte har svarat. Enligt vår toppskärm kan vi urskilja att det finns fyra instanser av chrome som körs med Process-ID (PID) 3827, 3919, 10764 och 11679. Denna information kommer att vara viktig att ha med en viss metod för att döda processen.
även om top är otroligt praktiskt, är det inte alltid det mest effektiva sättet att få den information du behöver. Låt oss säga att du vet att Chrome-processen är vad du behöver döda, och du vill inte behöva titta igenom realtidsinformationen som erbjuds av top. För det kan du använda ps-kommandot och filtrera utmatningen via grep. Ps-kommandot rapporterar en ögonblicksbild av en aktuell process och grep skriver ut linjer som matchar ett mönster. Anledningen till att vi filtrerar ps genom grep är enkel: Om du utfärdar ps-kommandot själv får du en ögonblicksbild av alla aktuella processer. Vi vill bara att listan är kopplad till Chrome. Så det här kommandot skulle se ut:
ps aux | grep chrome
aux-alternativen är följande:
-
a = Visa processer för alla användare
-
u = visa processens användare/ägare
-
x = visa även processer som inte är anslutna till en terminal
x-alternativet är viktigt när du letar efter information om en grafisk applikation.
När du utfärdar kommandot ovan får du mer information än du behöver (Figur 2) för att döda en process, men det är ibland effektivare än att använda top.
döda processen
Nu kommer vi till uppgiften att döda processen. Vi har två bitar av information som hjälper oss att döda den felaktiga processen:
-
processnamn
-
Process ID
som du använder bestämmer kommandot som används för uppsägning. Det finns två kommandon som används för att döda en process:
-
döda – döda en process med ID
-
killall – döda en process med namn
det finns också olika signaler som kan skickas till båda döda kommandona. Vilken signal du skickar bestäms av vilka resultat du vill ha från kill-kommandot. Till exempel kan du skicka Hup-signalen (häng upp) till kill-kommandot, vilket effektivt startar om processen. Detta är alltid ett klokt val när du behöver processen för att omedelbart starta om (till exempel i fallet med en demon). Du kan få en lista över alla signaler som kan skickas till kill-kommandot genom att utfärda kill-l. du hittar ett ganska stort antal signaler (Figur 3).
de vanligaste dödssignalerna är:
Signal Name |
Single Value |
Effect |
SIGHUP |
Hangup |
|
SIGINT |
Interrupt from keyboard |
|
SIGKILL |
Kill signal |
|
SIGTERM |
Termination signal |
|
SIGSTOP |
17, 19, 23 |
Stop the process |
vad är trevligt med detta är att du kan använda Signalvärdet i stället för Signalnamnet. Så du behöver inte memorera alla namnen på de olika signalerna.
så, låt oss nu använda kill-kommandot för att döda vår instans av chrome. Strukturen för detta kommando skulle vara:
kill SIGNAL PID
där signalen är signalen som ska skickas och PID är Process-ID som ska dödas. Vi vet redan, från vårt ps-kommando att ID: n vi vill döda är 3827, 3919, 10764 och 11679. Så för att skicka dödssignalen skulle vi utfärda kommandona:
kill -9 3827kill -9 3919kill -9 10764kill -9 11679
När vi har utfärdat ovanstående kommandon har alla chrome-processer framgångsrikt dödats.
Låt oss ta den enkla vägen! Om vi redan vet att processen vi vill döda heter chrome, kan vi använda killall-kommandot och skicka samma signal processen så här:
killall -9 chrome
den enda förbehållet till ovanstående kommando är att det kanske inte fångar alla chrome-processer som körs. Om du, efter att ha kört ovanstående kommando, utfärdar ps aux|grep chrome-kommandot och ser återstående processer som körs, är din bästa satsning att gå tillbaka till kill-kommandot och skicka signal 9 för att avsluta processen med PID.
Ending processes made easy
som du kan se är det inte så svårt att döda felaktiga processer som du kanske trodde. När jag slutar med en envis process tenderar jag att börja med killall-kommandot eftersom det är den mest effektiva vägen till uppsägning. Men när du slutar med en riktigt feisty process är kill-kommandot vägen att gå.
Läs mer om Linux genom den kostnadsfria kursen ”Introduktion till Linux” från Linux Foundation och edX.