Jak określić komendę zamykania demona przy uruchamianiu?

9

W konfiguracji wstępnej, jak zdefiniować, jakiej komendy należy użyć do zamknięcia serwera. Powiedzmy, że mam demona, który ma dwa osobne procesy.

  • startup.sh - aby uruchomić serwer
  • shutdown.sh - aby zamknąć serwer

Załóżmy, że mam plik upstart, który wygląda tak.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

Jak mam powiedzieć upstart, że powinien zadzwonić shutdown.shpodczas zamykania serwera? Jak zwykle upstart oczekuje zamknięcia demona?

ams
źródło

Odpowiedzi:

10

Użycie execdo 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/

roadmr
źródło
1
„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”. - zauważ, że używamy skryptów w świecie uniksowym, aby mieć kontrolę nad rzeczami oprócz pracy programistów. Jest to niedorzeczna uwaga, ponieważ potrzebujemy miejsca, w którym można na przykład wysłać wiadomość e-mail, usunąć blokadę z dysku itp., A zadania te nie muszą być częścią samego demona. Upstart nie jest więc gotowy do użycia w środowisku serwerów.
kakaz
Z tej odpowiedzi (Jednej!) Widzę, że nie ma dobrego sposobu robienia tego, czego potrzebujemy?
kakaz