ein Blog

daemontools + shellscript + php

nein, nicht die daemontools mit denen man ISOs unter windows mounten kann (die schreibt man nämlich "Daemon Tools"). Ich meine diese daemontools.

Ist ein einfaches tool mit dem man unter Linux dinge als Service laufen lassen kann, die es von sich aus nicht können. z. B. könnte ich damit diese Ghost Instanz damit laufen lassen.

Wir nutzen das auch um ein php script laufen zu lassen das eine Beanstalkd Queue abarbeitet. Das PHP läuft im idealfall endlos. Damit das ordentlich läuft müssen aber vorher noch eine hand voll commands abgesetzt werden. Deswegen haben wir das ganze in ein Shell Script eingepackt.

Das Problem ist jetzt, dass der php prozess weiter läuft, wenn man daemontools sagt, dass es den service stoppen soll. nur das shellscript wird beendet.

ein bisschen basteln und probieren hat dann folgende Lösung ergeben: trap '{ kill $(jobs -p); exit 0; }' EXIT am besten möglichst weit oben in script rein packen. Das sorgt dann dafür, dass alle child-prozesse beim beenden des shellscripts ein kill bekommen. kann man natürlich auch nutzen um andere dinge zu machen, wenn das shellscript beendet wird.