60.12. Ukončení programu včetně všech jeho potomků

V praxi jsem se setkal s potřebou ukončit proces jež pid je známo v četně všech jeho potomků. Prozkoumal jsem všechny dostupné přiakzy a zjistil že žádný z nich tuto možnost neposkytuje. Ve svých skriptech proto používám jednoduchou funkci která toto umí. Ta vychází z toho, že sice nemohu zjistit všechny potomky procesu, ale mohu zjistit všechny potomky v první generaci. Rekurzivně pak procházím potomky těchto potomků. Výsledný kód je velmi jednoduchý.

#!/bin/bash
…
# Killing process with all it's children.

function killtree() {
    local -r parent=$1
    local -r children=$(pgrep -P $parent)
    kill -s KILL $parent
    for child in $children; do
	killtree $child
    done
} #killtree()