Das exec
Starten des Prozesses ist in Ordnung. Wenn Sie ihn jedoch stoppen, müssen Sie die Zeilengruppe verwenden, wenn Sie unbedingt ein bestimmtes Skript oder einen bestimmten Befehlssatz ausführen müssen pre-stop
.
pre-stop exec shutdown.sh
Ich gehe davon aus, dass Sie versucht haben, nur eine Exec-Zeilengruppe zu verwenden, und dies hat nicht funktioniert, möglicherweise weil Ihr Daemon eine spezielle Bereinigung erfordert. Beachten Sie, dass gut erzogene Dämonen beim Stoppen des Jobs ein Signal vom Start erhalten sollten. Wenn sie das Signal angemessen verarbeiten, sollte keine zusätzliche Bereinigung erforderlich sein.
Um einen Job zu stoppen, muss SIGTERM an ihn gesendet werden. Wenn vor SIGTERM etwas getan werden muss, tun Sie es hier. Dienste sollten SIGTERM wohl sehr elegant handhaben, daher sollte dies nicht notwendig sein.
Wenn es etwas Kritisches gibt, wie ein Flush auf die Festplatte, und das Erhöhen des Kill-Timeouts keine Option ist, ist Pre-Stop kein schlechter Ort, um dies zu tun
Lesen Sie in diesem Abschnitt auch den gesamten Workflow darüber, was passiert, wenn Sie einen Job beenden. Beachten Sie, wann Pre-Stop ausgeführt wird und wie anschließend ein Signal an den Prozess gesendet wird. So behandelt Upstart das normale Stoppen von Jobs.
Meine Quelle ist das offizielle Upstart-Kochbuch unter: http://upstart.ubuntu.com/cookbook/