Użycie exec
do uruchomienia procesu jest w porządku, ale gdy go zatrzymasz, jeśli absolutnie potrzebujesz uruchomić określony skrypt lub zestaw poleceń, możesz użyć sekcji pre-stop
.
pre-stop exec shutdown.sh
Zakładam, że próbowałeś po prostu użyć sekcji exec i to nie działało, być może dlatego, że twój demon wymaga specjalnego czyszczenia. Należy pamiętać, że dobrze zachowujące się demony powinny otrzymywać sygnał od początku, gdy zadanie zostanie zatrzymane, a jeśli odpowiednio obsługują sygnał, żadne dodatkowe czyszczenie nie powinno być potrzebne.
Zatrzymanie zadania polega na wysłaniu do niego SIGTERM. Jeśli jest coś, co należy zrobić przed SIGTERM, zrób to tutaj. Zapewne usługi powinny obsługiwać SIGTERM bardzo wdzięcznie, więc nie powinno to być konieczne.
jeśli jest coś krytycznego, na przykład kolor na dysk, a zwiększenie limitu czasu zabijania nie wchodzi w grę, wstępny przystanek nie jest złym miejscem do zrobienia tego
Przeczytaj także tę sekcję, aby zapoznać się z całym przepływem pracy po zatrzymaniu zadania. Zwróć uwagę, kiedy uruchomione jest wstępne zatrzymanie i jak sygnał jest wysyłany do procesu, i tak w ten sposób upstart normalnie obsługuje zatrzymywanie zadań.
Moim źródłem jest oficjalna książka kucharska Upstart pod adresem: http://upstart.ubuntu.com/cookbook/