interesseret i at lære mere om administration? Udforsk disse kurser.
- Introduktion til lfs101) – gratis
- Essentials of Lfs201)
Lær at dræbe vildfarne processer i denne tutorial fra vores arkiver.
Forestil dig dette: du har lanceret et program (det være sig fra din foretrukne skrivebordsmenu eller fra kommandolinjen), og du begynder at bruge den lancerede app, kun for at få den låst på dig, stoppe med at udføre eller uventet dø. Du prøver at køre appen igen, men det viser sig, at originalen aldrig rigtig lukker helt ned.
Hvad laver du? Du dræber processen. Men hvordan? Tro det eller ej, din bedste indsats ligger oftest inden for kommandolinjen. Heldigvis har vi alle de værktøjer, der er nødvendige for at give dig, brugeren, mulighed for at dræbe en vildfaren proces. Men før du straks starter denne kommando for at dræbe processen, skal du først vide, hvad processen er. Hvordan tager du dig af denne lagdelte opgave? Det er faktisk ret simpelt … når du kender værktøjerne til din rådighed.
lad mig introducere dig til de nævnte værktøjer.
de trin, jeg vil skitsere, fungerer på næsten enhver distribution, uanset om det er et skrivebord eller en server. Jeg vil beskæftige mig strengt med kommandolinjen, så åbn din terminal og forbered dig på at skrive.
lokalisering af processen
det første trin i at dræbe den ikke-reagerende proces er at lokalisere den. Der er to kommandoer, jeg bruger til at finde en proces: top og ps. Top er et værktøj, som enhver administrator skal lære at kende. Med top får du en komplet liste over aktuelt kørende proces. Fra kommandolinjen skal du udstede top for at se en liste over dine kørende processer (Figur 1).
fra denne liste vil du se nogle ret vigtige oplysninger. Sig for eksempel, at Chrome ikke reagerer. Ifølge vores topskærm kan vi skelne, at der er fire forekomster af chrome, der kører med Proces-id ‘ er (PID) 3827, 3919, 10764 og 11679. Disse oplysninger vil være vigtige at have med en bestemt metode til at dræbe processen.
selvom top er utroligt praktisk, er det ikke altid det mest effektive middel til at få de oplysninger, du har brug for. Lad os sige, at du ved, at Chrome-processen er, hvad du har brug for at dræbe, og du ikke ønsker at skulle kigge gennem de realtidsoplysninger, der tilbydes af top. Til det kan du bruge ps-kommandoen og filtrere output gennem grep. Ps-kommandoen rapporterer et øjebliksbillede af en aktuel proces, og grep udskriver linjer, der matcher et mønster. Årsagen til, at vi filtrerer ps gennem grep, er enkel: Hvis du selv udsteder ps-kommandoen, får du et øjebliksbillede af alle aktuelle processer. Vi vil kun have den liste, der er knyttet til Chrome. Så denne kommando ville se ud:
ps aux | grep chrome
indstillingerne er som følger:
-
a = vis processer for alle brugere
-
u = Vis procesens bruger/ejer
-
viser også processer, der ikke er knyttet til en terminal
indstillingen er vigtig, når du søger efter oplysninger om en grafisk applikation.
når du udsteder kommandoen ovenfor, får du flere oplysninger, end du har brug for (figur 2) til drab af en proces, men det er nogle gange mere effektivt end at bruge top.
dræber processen
nu kommer vi til opgaven med at dræbe processen. Vi har to stykker information, der hjælper os med at dræbe den vildfarne proces:
-
Procesnavn
-
proces-ID
som du bruger, bestemmer den kommando, der bruges til opsigelse. Der er to kommandoer, der bruges til at dræbe en proces:
-
kill – Kill a process by ID
-
killall – Kill a process by name
der er også forskellige signaler, der kan sendes til begge kill-kommandoer. Hvilket signal du sender vil blive bestemt af hvilke resultater du ønsker fra kill kommandoen. For eksempel kan du sende HUP (læg på) signalet til kill-kommandoen, som effektivt genstarter processen. Dette er altid et klogt valg, når du har brug for processen til straks at genstarte (f.eks. Du kan få en liste over alle de signaler, der kan sendes til kill-kommandoen ved at udstede kill-l. du finder et stort antal signaler (figur 3).
de mest almindelige kill signaler er:
Signal Name |
Single Value |
Effect |
SIGHUP |
Hangup |
|
SIGINT |
Interrupt from keyboard |
|
SIGKILL |
Kill signal |
|
SIGTERM |
Termination signal |
|
SIGSTOP |
17, 19, 23 |
Stop the process |
Hvad er godt ved dette er, at du kan bruge signalværdien i stedet for Signalnavnet. Så du behøver ikke at huske alle navnene på de forskellige signaler.
så lad os nu bruge kommandoen kill til at dræbe vores forekomst af chrome. Strukturen for denne kommando ville være:
kill SIGNAL PID
hvor SIGNAL er signalet, der skal sendes, og PID er det proces-ID, der skal dræbes. Vi ved allerede fra vores ps-kommando, at de id ‘ er, vi vil dræbe, er 3827, 3919, 10764 og 11679. Så for at sende kill-signalet, ville vi udstede kommandoerne:
kill -9 3827kill -9 3919kill -9 10764kill -9 11679
Når vi har udstedt ovenstående kommandoer, er alle chrome-processerne blevet dræbt.
lad os tage den nemme rute! Hvis vi allerede ved, at den proces, vi vil dræbe, hedder chrome, kan vi gøre brug af killall-kommandoen og sende det samme signal processen som sådan:
killall -9 chrome
den eneste advarsel til ovenstående kommando er, at den muligvis ikke fanger alle de kørende chrome-processer. Hvis du efter at have kørt ovenstående kommando udsteder PS / grep chrome-kommandoen og ser de resterende processer køre, er dit bedste valg at gå tilbage til kill-kommandoen og sende signal 9 for at afslutte processen med PID.
Afslutningsprocesser gjort let
som du kan se, er det ikke så udfordrende at dræbe vildfarne processer, som du måske har troet. Når jeg ender med en stædig proces, har jeg en tendens til at starte med killall-kommandoen, da det er den mest effektive rute til opsigelse. Men når du ender med en virkelig feisty proces, er kill-kommandoen vejen at gå.
få mere at vide om