
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.service
und dann ausgeführt ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Ich habe es dann ausgeführt, systemd reload-daemon
gefolgt von systemctl start emailserver.service
, und wenn ich es dann ausführe, ps -ef |grep -i emailserver
kann ich sehen, dass mono EmailServer.exe
es ausgeführt wird. Bisher sieht alles gut aus.
Wenn ich den Server jedoch neu starte, /var/log/messages
enthä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.service
Ihrer 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-files
und um den korrekten Namen für Ihren Datenbankdienst zu ermitteln (wahrscheinlich ist es entweder mysql.service oder mysqld.service).