Ich arbeite an einem Projekt, das ein Mono EmailServer ist. Ich habe versucht, einen Dienst zum systemd hinzuzufügen, damit dieser beim Booten automatisch gestartet wird, aber ich habe ein Problem.
Ich habe das Skript erstellt und 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 dann ausgeführt, systemd reload-daemon
gefolgt von systemctl start emailserver.service
und wenn ich dann laufe, ps -ef |grep -i emailserver
kann ich dann sehen, dass mono EmailServer.exe
läuft, alles sieht soweit gut aus.
Wenn ich den Server in der /var/log/messages
Datei neu starte, wird die folgende Fehlermeldung angezeigt
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 leisten können.
UPDATE 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 wird vor dem Start von MySQL gestartet. Wie kann ich dafür sorgen, dass mein Dienst erst nach dem Start von MySQL geladen wird?
Antworten:
Ergänzen Sie
After=mysql.service
Ihre Servicedatei (oder ändern Sie sie in den korrekten Servicenamen), zB:Bitte beachten Sie, dass Sie Ihre Servicedatei nicht in / lib / systemd / system ablegen müssen. Es handelt sich um eine vom Benutzer bereitgestellte Datei, die Sie nur nach / etc / systemd / system kopieren sollten.
Um eine Liste aller Servicedateien zu erhalten, können Sie
systemctl list-unit-files
den richtigen Namen für Ihren Datenbankservice festlegen (es handelt sich wahrscheinlich entweder um mysql.service oder mysqld.service).quelle
After=*.service
und bestellte haben?