2017-03-24 4 views
5

Ich habe einen Dienst, der davon abhängt, dass Cassandra anmutig auftaucht und der Cluster bereit ist.Wie kann sichergestellt werden, dass es eine Verzögerung gibt, bevor ein Dienst in Systemd gestartet wird?

Um sicherzustellen, dass die Abhängigkeit Auftrag erfüllt ist, ich habe die folgende Einheit Datei

[Unit] 
Requires=cassandra.service 
After=cassandra.service 

[Service] 
Environment=JAVA_HOME=/usr/java/jre 
[email protected]@/webapps/bringup-app/bin/bringup 
TimeoutStartSec=0 
ExecStop= 
[email protected]@/logs/bringup.pid 
Restart=always 

[Install] 
WantedBy=multi-user.target 

Wie stelle ich sicher, dass der bringup-App-Prozess für 30 Sekunden wartet, bevor es zu starten versucht? Derzeit, obwohl es nach Cassandra gestartet wurde, habe ich bemerkt, dass der Cassandra-Cluster noch nicht aktiv ist und daher der Versuch der Bringup-App fehlschlägt, sich mit Cassandra zu verbinden.

Ich möchte daher eine Verzögerung hinzufügen. Ist das über die Unit-Datei möglich?

+0

Haben Sie meine Antwort überprüft? –

Antwort

1

Diese Antwort auf Super-User Ich denke, eine bessere Antwort. https://superuser.com/a/573761/67952

Aber da Sie nach einer Möglichkeit gefragt, ohne vorher und nachher zu verwenden, können Sie verwenden:

Type=idle 

die als man systemd.service erklärt

zu einfach sehr ähnlich ist, aber tatsächliche Ausführung von Die Service-Binärdatei wird verzögert, bis alle Jobs versendet wurden. Dies kann verwendet werden, um eine Verschachtelung der Ausgabe von Shell-Diensten mit der Statusausgabe auf der Konsole zu vermeiden.

Verwandte Themen