2017-03-20 2 views
-1

Ich habe mehrere Tomcat-Instanzen, die in der Reihenfolge beginnen müssen. Mit Hilfe von After = und Requires = ist das bei mehreren Service-Dateien kein echtes Problem.Systemd: Verzögerung der Rückkehr eines Dienstes, bis der Start beendet

Mein Problem ist jetzt, dass ich machen muss, dass die Webapp innerhalb gestartet wird, bevor der nächste Tomcat startet.

Ist es möglich, eine Art Verzögerung zu definieren, um den Start des Dienstes zu gewährleisten? Ich konnte nichts in der Dokumentation finden.

Sonst wäre meine letzte Chance, den catalina.sh-Aufruf mit einem Shell-Skript zu umbrechen, das ich stattdessen anrufe, das den Start sicherstellt, aber ich würde es vorziehen, es nur mit Systemd zu machen.

Außerdem möchte ich nicht die Code-Basis ändern, so kann ich nicht sd_notify oder ähnliches hinzufügen.

+1

Mögliche Duplikat [Systemd http Gesundheits-Check] (http://stackoverflow.com/questions/39679067/systemd-http-health-check) – nir0s

+0

Mögliche Duplikat: http://stackoverflow.com/questions/39679067/ systemd-http-health-check .. welches du sehen kannst, um deine Aufgabe zu lösen. – nir0s

+0

Vielleicht stimmt das, aber die Antwort ist nicht detailliert genug für mich, tut mir leid. – Hoall

Antwort

1

Wenn Systemd warten muss, bis Prozess-A seine Operationen (in Ihrem Fall Start von Webapp) beendet und an Systemd zurückmeldet, damit Systemd nächsten Prozess-B startet, der von Prozess-A abhängt, dann hat Prozess-A um ein sd_notify() zu implementieren, das Systemd informiert, dass der Prozess-A gestartet wurde und mit dem Starten abhängiger Apps fortfährt.

über sd_notify here

auch zusammen mit sd_notify() in Ihrem Prozess-A Sie den Typ hinzufügen müssen lesen = Benachrichtigungen für systemd prozess A.service Datei in auf sd_notify warten().

0

In diesem Fall möchte ich nichts an der Software eines bereitgestellten Software-Skripts ändern.

Eine Lösung, die ich fand, passte meine Bedürfnisse. Mit ExecStartPost können Sie einen Test oder was auch immer ausführen, um zu testen, ob der Dienst aktiv ist oder Sie verwenden ihn nur für einen Ruhezustand oder so. Es zählt zum Booten und systemd wartet mit dem Zurückgeben, bis ExecStartPost auch (erfolgreich) zurückgegeben wird.

Verwandte Themen