Android

Hoe een proces in Linux te doden

HakTip - Linux Terminal 101: Controlling Processes

HakTip - Linux Terminal 101: Controlling Processes

Inhoudsopgave:

Anonim

Heb je ooit de situatie meegemaakt waarin je een applicatie hebt gestart en plotseling terwijl je de applicatie gebruikt, reageert deze niet meer en crasht deze onverwachts? U probeert de toepassing opnieuw te starten, maar er gebeurt niets omdat het oorspronkelijke toepassingsproces nooit volledig wordt afgesloten.

Nou, het is ons allemaal wel eens overkomen, niet? De oplossing is om het aanvraagproces te beëindigen of te beëindigen. Maar hoe?

Gelukkig zijn er verschillende hulpprogramma's in Linux waarmee je foutieve processen kunt doden., laten we je zien hoe je kill , pkill en pkill opdrachten kunt gebruiken om een ​​proces in Linux te beëindigen.

Het belangrijkste verschil tussen deze tools is dat kill processen beëindigt op basis van Process ID number (PID), terwijl de opdrachten pkill en pkill lopende processen beëindigen op basis van hun namen en andere kenmerken.

Reguliere gebruikers kunnen hun eigen processen doden, maar niet die van andere gebruikers, terwijl de rootgebruiker alle processen kan doden.

Systeemdoodsignalen

kill , pkill en pkill sturen een bepaald signaal naar opgegeven processen of procesgroepen. Als er geen signaal is opgegeven, verzendt elk gereedschap 15 ( TERM ).

De meest gebruikte signalen zijn:

  • 1 (-HUP): om een ​​proces opnieuw te laden. 9 (-KILL): om een ​​proces te doden. 15 (-TERM): om een ​​proces sierlijk te stoppen.

Signalen kunnen op drie verschillende manieren worden gespecificeerd:

  • gebruik nummer (bijv. -1) met het "SIG" -prefix (bijv. -SIGHUP) zonder het "SIG" -prefix (bijv. -HUP).

Gebruik de optie -l om alle beschikbare signalen weer te geven:

kill -l # or killall -l

De onderstaande stappen werken op alle Linux-distributies.

Processen beëindigen met het kill commando

Om een ​​proces met het kill commando te beëindigen, moet u eerst het proces-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 proces-ID te vinden:

pidof firefox

De opdracht drukt alle Firefox-processen af:

2551 2514 1963 1856 1771

Zodra u weet dat Firefox PID's verwerkt om ze allemaal te beëindigen, stuurt u het TERM signaal:

kill -9 2551 2514 1963 1856 1771

Processen beëindigen met het killall commando

De opdracht killall beëindigt alle programma's die overeenkomen met een opgegeven naam.

Met hetzelfde scenario als eerder, kunt u het Firefox-proces doden door te typen:

killall -9 firefox

killall accepteert verschillende opties, zoals het verzenden van signalen naar processen die eigendom zijn van een bepaalde gebruiker, het vergelijken van procesnamen met reguliere expressies en de aanmaaktijd. U kunt een lijst met alle opties krijgen door killall (zonder argumenten) op uw terminal te typen.

Als u bijvoorbeeld alle processen wilt beëindigen die als gebruiker 'sara' worden uitgevoerd, voert u de volgende opdracht uit:

sudo killall -u sara

Processen beëindigen met het opdracht pkill

pkill beëindigt processen die overeenkomen met het patroon op de opdrachtregel:

pkill -9 firefox

De naam van het proces hoeft niet exact overeen te komen.

Met pkill kunt u ook een signaal sturen naar processen die eigendom zijn van een bepaalde gebruiker. Om alleen de firefox-processen die eigendom zijn van de gebruiker "sara" te doden, typ je:

pkill -9 -u sara firefox

Conclusie

Niet-reagerende programma's beëindigen met de opdrachten kill , pkill en pkill is een gemakkelijke taak. U hoeft alleen de procesnaam of PID te kennen.

doden terminal