Linux: een proces stoppen met kill

20 augustus, 2014
Handleidingen
Linux

Het kan voorkomen dat een programma of script vastloopt, in een oneindige lus verstrikt raakt, of om andere reden niet vanzelf afsluit of via het reguliere procesbeheer te stoppen is. In dat geval is het op Linux-systemen mogelijk om het stopzetten van zo'n proces te forceren met het kill-commando.

Met het kill-commando wordt standaard een SIGTERM-signaal (TERM voor terminate) naar een proces verzonden, aan de hand van het unieke identificatienummer van dat proces. Dit niet-dwingende signaal geeft het proces nog de mogelijkheid om te reageren, bijvoorbeeld door de gebruikte systeembronnen op te schonen en vrij te geven voordat het afsluit. Een proces kan er echter ook voor kiezen om het signaal te negeren.

Naast SIGTERM zijn er nog 63 andere Unix-signalen, op te vragen met het commando kill -l, maar voor het stopzetten van processen volstaat doorgaans het SIGTERM- of SIGKILL-signaal. Zoals de naam al suggereert is het SIGKILL-signaal een agressievere manier om een proces te beëindigen.

Proces-ID achterhalen

Voordat een proces met kill gestopt kan worden, moet het ID van dat proces bekend zijn. Er zijn meerdere manieren om dit te achterhalen. Eén daarvan is met het programma top, dat een lijst van alle actieve processen op overzichtelijke wijze weergeeft, inclusief de bijbehorende proces-ID's.

Er zijn echter ook eenvoudige commando's waarmee een proces-ID achterhaald kan worden, zoals:

pidof procesnaam

Het pidof-commando is specifiek bedoeld voor het opvragen van een proces-ID. Een alternatief is:

ps aux | grep procesnaam

Waarbij het proces-ID in de tweede rij van links, rechts van de procesnaam staat.

Kill-commando uitvoeren

Met het proces-ID bij de hand, bijvoorbeeld 7832, kunnen we het kill-commando als volgt uitvoeren:

kill 7832

Het programma stuurt nu een SIGTERM-signaal naar het proces met het ID 7832. Reageert het proces niet, stuur dan eventueel een SIGKILL-signaal:

kill -9 7832

Controleer naderhand eventueel met het bovenstaande pidof of ps aux of het proces inderdaad gestopt is.