Wie kann ich einen systemd-Dienst erst starten, nachdem MySQL gestartet wurde?

Wie kann ich einen systemd-Dienst erst starten, nachdem MySQL gestartet wurde?

Ich arbeite an einem Projekt, bei dem es sich um einen Mono-E-Mail-Server handelt. Ich habe versucht, dem systemd einen Dienst hinzuzufügen, damit dieser beim Booten automatisch gestartet wird, aber ich habe ein Problem.

Ich habe das Skript erstellt, hinzugefügt /lib/systemd/system/emailserver.serviceund dann ausgeführt ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service.

Ich habe es dann ausgeführt, systemd reload-daemongefolgt von systemctl start emailserver.service, und wenn ich es dann ausführe, ps -ef |grep -i emailserverkann ich sehen, dass mono EmailServer.exees ausgeführt wird. Bisher sieht alles gut aus.

Wenn ich den Server jedoch neu starte, /var/log/messagesenthält die Datei die folgende Fehlermeldung

Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff
time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:03 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:04 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:04 dev-server systemd[1]: emailserver.service start request
repeated too quickly, refusing to start.

In meinem emailserver.service-Skript habe ich Folgendes

[Unit]
Description=Boardies Email Server Startup Script

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

Ich verwende OpenSuse 12.1

Was mache ich falsch? Danke für jede Hilfe, die Sie mir geben können.

AKTUALISIEREN Ich habe herausgefunden, warum das Programm beim Booten nicht mehr funktioniert, bin mir aber nicht sicher, wie ich dieses Problem beheben kann. Mein Programm basiert auf einer MySQL-Datenbank und ich glaube, mein Programm startet, bevor MySQL gestartet ist. Wie kann ich dafür sorgen, dass mein Dienst erst geladen wird, wenn MySQL gestartet ist?

Antwort1

Fügen Sie After=mysql.serviceIhrer Servicedatei Folgendes hinzu (oder ändern Sie es in den richtigen Servicenamen), zum Beispiel:

[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service

[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always

[Install]
WantedBy=multi-user.target

Bitte beachten Sie, dass Sie Ihre Servicedatei nicht in /lib/systemd/system ablegen müssen. Es handelt sich um eine vom Benutzer bereitgestellte Datei und Sie sollten sie nur nach /etc/systemd/system kopieren.

Um eine Liste aller Servicedateien zu erhalten, die Sie verwenden können, systemctl list-unit-filesund um den korrekten Namen für Ihren Datenbankdienst zu ermitteln (wahrscheinlich ist es entweder mysql.service oder mysqld.service).

verwandte Informationen