Android

Kill-opdracht in Linux

Linux Command Line Tutorial For Beginners 15 - kill command

Linux Command Line Tutorial For Beginners 15 - kill command

Inhoudsopgave:

Anonim

Linux is een geweldig en geavanceerd besturingssysteem, maar het is niet perfect. Eens in de zoveel tijd gedragen sommige toepassingen zich soms grillig en reageren ze niet meer of gaan ze veel systeembronnen in beslag nemen. Niet-reagerende toepassingen kunnen niet opnieuw worden gestart omdat het oorspronkelijke toepassingsproces nooit volledig wordt afgesloten. De enige oplossing is om het systeem opnieuw op te starten of het toepassingsproces te beëindigen.

Er zijn verschillende hulpprogramma's waarmee u foutieve processen kunt beëindigen en het meest gebruikte kunt kill .

commando kill

kill is een shell ingebouwd in de meeste van Bourne afgeleide shells zoals Bash en Zsh. Het opdrachtgedrag verschilt enigszins tussen de shells en het zelfstandige /bin/kill uitvoerbare bestand.

Gebruik de opdracht type om alle locaties op uw systeem met kill :

type -a kill

kill is a shell builtin kill is /bin/kill

De output hierboven vertelt dat de ingebouwde shell prioriteit heeft over het zelfstandige uitvoerbare bestand en het wordt gebruikt wanneer je kill typt. Als u het binaire bestand wilt gebruiken, typt u het volledige pad naar het bestand /bin/kill ., we zullen de Bash ingebouwde gebruiken.

De syntaxis van het kill commando heeft de volgende vorm:

kill…

Het kill commando stuurt een signaal naar gespecificeerde processen of procesgroepen, waardoor ze volgens het signaal handelen. Als het signaal niet is opgegeven, wordt standaard -15 (-TERM) gebruikt.

De meest gebruikte signalen zijn:

  • 1 ( HUP ) - Laad een proces opnieuw. 9 ( KILL ) - Dood een proces. 15 ( TERM ) - Stop een proces netjes.

Roep de opdracht op met de optie -l om een ​​lijst met alle beschikbare signalen te krijgen:

kill -l

Signalen kunnen op drie verschillende manieren worden gespecificeerd:

  1. Nummer gebruiken (bijv. -1 of -s 1 ).Het "SIG" -SIGHUP (bijv. -SIGHUP of -s SIGHUP ). Zonder het "SIG" -HUP (bijv. -HUP of -s HUP ).

De volgende opdrachten zijn gelijkwaardig aan elkaar:

kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER

De PID's die aan het kill commando worden verstrekt, kunnen een van de volgende zijn:

  • Als PID groter is dan nul, wordt het signaal verzonden naar het proces met ID gelijk aan de PID . Als PID gelijk is aan nul, wordt het signaal verzonden naar alle processen in de huidige procesgroep. Met andere woorden, het signaal wordt verzonden naar alle processen die behoren tot de GID van de shell die het kill commando heeft aangeroepen. Gebruik de opdracht ps -efj om de procesgroep-ID's (GID's) te bekijken. Als PID gelijk is aan -1 , wordt het signaal verzonden naar alle processen met dezelfde UID als de gebruiker die de opdracht aanroept. Als de aanroepende gebruiker root is, wordt het signaal verzonden naar alle processen behalve init en het kill proces zelf. Als PID kleiner is dan -1 , wordt het signaal verzonden naar alle processen in de procesgroep eq met GID gelijk aan de absolute waarde van de PID .

Reguliere gebruikers kunnen signalen naar hun eigen processen sturen, maar niet die van andere gebruikers, terwijl de rootgebruiker signalen naar processen van andere gebruikers kan sturen.

Processen beëindigen met het kill commando

Om een ​​proces te beëindigen of te doden met de opdracht kill , moet u eerst het proces-ID-nummer (PID) vinden. U kunt dit doen met behulp van verschillende opdrachten zoals top , ps , pidof en pgrep .

Stel dat de Firefox-browser niet meer reageert en dat u het Firefox-proces moet beëindigen. Gebruik de opdracht pidof om de browser-PID's te vinden:

pidof firefox

De opdracht drukt de ID's van alle Firefox-processen af:

6263 6199 6142 6076

Zodra u de procesnummers kent, kunt u ze allemaal beëindigen door het TERM signaal te verzenden:

kill -9 2551 2514 1963 1856 1771

In plaats van naar PID's te zoeken en vervolgens de processen te beëindigen, kunt u de bovenstaande opdrachten combineren in één:

kill -9 $(pidof firefox)

Processen opnieuw laden met de opdracht kill

Een ander veelgebruikt geval voor kill is om het HUP signaal te verzenden, dat de processen vertelt de instellingen opnieuw te laden.

Als u Nginx bijvoorbeeld opnieuw wilt laden, moet u een signaal verzenden naar het masterproces. Het proces-ID van het Nginx-masterproces is te vinden in het bestand nginx.pid , dat zich meestal in de map /var/run .

Gebruik de opdracht cat om de master-PID te vinden:

cat /var/run/nginx.pid

30251

Zodra u de master-PID hebt gevonden, laadt u de Nginx-instellingen opnieuw door te typen:

sudo kill -1 30251

De bovenstaande opdracht moet worden uitgevoerd als root of gebruiker met sudo-rechten.

Conclusie

Het kill commando wordt gebruikt om een ​​signaal naar processen te sturen. Het meest gebruikte signaal is SIGKILL of -9 , waarmee de gegeven processen worden beëindigd.

doden terminal