KILL

Stuur een signaal naar een process

Hoewel UNIX®-achtige systemen zoals macOS®, BSD® en Linux® door hun ontwerp stabieler zijn dan Microsoft® Windows® kan het toch voorkomen dat we een programma moeten afsluiten wanneer het stopt met reageren. Bij dat andere bekende besturingsysteem drukken we dan op CTRL + ALT + DEL om de process manager te openen en kunnen we het programma van daaruit geforceert afsluiten.

Bij de Linux commandoregel gebruiken we dus kill en vaak in samenwerking met een tool als htop of ps. Met deze programma's zoeken we het PID (Process ID) van het process dat we willen afsluiten en gebruiken dat samen met kill om het dan effectief af te sluiten.

Figuur 1. $ ps -e
$ ps -e

In de afbeelding zien we een stukje van de uitvoer van het commando $ ps -e, wat we willen weten is het getal 22465 (in dit geval is dat het chat programma Telegram wat we binnen de Linuxgebruikers redactie gebruiken).

Wil ik dit programma nu gedwongen afsluiten gebruik ik het commando $ kill 22465:
Figuur 2. $ kill 22465
$ kill 22465

In dit geval geeft kill geen melding.

Indien het PID niet bestaat, bijvoorbeeld als ik het exacte commando opnieuw ingeef krijg ik wel een foutmelding van kill:
Figuur 3. $ kill 22465
$ kill 22465
Natuurlijk kan kill veel meer dan enkel dit, willen we zien wat we allemaal met kill kunnen doen kunnen we natuurlijk zoals altijd de manpages of infopages raadplegen, of als je al wat meer weet over het gebruik van kill maar niet precies meer weet welk commando precies wat doen, gebruik je kill -L:
Figuur 4. $ kill -L
$ kill -L
Ik kan hier niet alle mogelijke opties gaan behandelen, maar hier geef ik enkele die regelmatig gebruikt worden:
  1. SIGHUP: Dit geeft aan het programma aan dat de terminal (seriëel of virtueel) die het programma beheert gaat afsluiten. (komt van SIGnal Hang UP.
  2. SIGKILL: Gebruik van SIGKILL wordt ten zeerste afgeraden! Je kunt dit vergelijken met het uittrekken van de stekker, het process zal onmiddellijk afgesloten worden en krijgt dus geen tijd om alles netjes "op te ruimen" voordat het wordt afgesloten. 1.
  3. SIGTERM: Sigterm kun je zien als het vriendelijk vragen aan een process/programma of af te sluiten. Er kunnen in dit geval verschillende dingen gebeuren:
    • Het programma sluit onmiddellijk af.
    • Het programma sluit af na een korte tijd (het programma zal dan eerst alles "opruimen" voor het zichzelf afsluit.
    • Het programma blijft eindeloos actief en sluit niet af, in dit geval zal een sysadmin vaak toevlucht nemen naar kill -9 of kill -SIGKILL om het programma alsnog af te sluiten.

Het komt er dus op neer dat je meestal een SIGKILL gebruikt en als laatste hulpmiddel een SIGTERM, de SIGHUP wordt automatisch gestuurt als je een terminal venster sluit met daarin nog een draaiend process.

Als je meerdere processen in 1 keer wil afsluiten kun je het PID gescheiden door een spatie achter elkaar ingeven, zoals het voorbeeld in de Manpages aangeeft : kill 123 543 2341 3453

Wil je alle programma's die je kunt afsluiten beëindigen: kill -15 -1

Heb je nu verschillende processen met dezelfde naam en wil je deze allemaal afsluiten, dan kun je ook gebruik maken van killall gevolgt door de naam van het process.

Figuur 5. $ killall Telegram
$ killall Telegram

Dit werkt natuurlijk ook als er maar 1 process met die naam actief is. Dit commando is wel HooFdLetter gevoelig (CaSe SenSItiVe), dus killall Telegram werkt, maar killall telegram niet.

Voor de mensen die liever met een GUI werken is er ook nog het programma xkill dit toont een doodshoofd cursor en sluit het venster waarop je dan klikt. Het voordeel hiervan is ook dat je geen naam van een programma of PID moet opzoeken.

Meer informatie kun je altijd terugvinden in de manpages of de infopages

1 kill -SIGKILL is hetzelfde als kill -9 en beide worden dus afgeraden