systemd-Skript zum Starten meines App-Servers, sobald dieser ausfällt oder das System neu gestartet wird

systemd-Skript zum Starten meines App-Servers, sobald dieser ausfällt oder das System neu gestartet wird

Ich habe eine Upstart-Konfigurationsdatei wie unten gezeigt, die unter Ubuntu 14 einwandfrei funktioniert:

#/etc/init/data_server.conf
#sudo start data_server
#sudo stop data_server
#sudo status data_server

start on runlevel [2345]
stop on runlevel [016]

chdir /opt/hold/data_server
respawn

post-start script
    echo "data server started at `date +"%F %T"` on `hostname -f`" | mailx -r "[email protected]" -s "data server Started" "[email protected]"
end script

post-stop script
  sleep 30
end script

limit core unlimited unlimited
limit nofile 100000 100000
setuid goldy
exec ./data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5

Jetzt wechseln wir zu Ubuntu 16, daher können wir nicht verwenden upstartund es sieht so aus, als müssten wir hier verwenden systemd. Welche Änderungen muss ich vornehmen, um Skripte darin zu schreiben systemd?

Ich muss sicherstellen, dass bei jedem Neustart des Systems oder Beenden einer App mein systemdSkript automatisch gestartet wird, das wiederum mein startet data server.

Antwort1

Ihr Upstart-Skript wird sich stark ändern. Sie müssen nicht so viele Anweisungen manuell angeben, daher wird es auch viel kürzer sein.

Um einen Prozess immer beim Booten zu starten und neu zu starten, wenn er abstürzt, genügt eine einzige Zeile:

Restart=always

Ich weiß nicht, wie viele benutzerdefinierte Änderungen Sie beibehalten müssen, aber es sieht so aus, als müssten Sie mindestens die Befehle chdirund beibehalten exec.

Hier ist ein Beispiel für ein grundlegendes systemd-Skript für Ihre App:

[Unit]
Description=My-service

[Service]
Type=simple
WorkingDirectory=/opt/hold/data_server
ExecStart=/path/to/data_server --init_file=../config/tree.init --port=8080 --dir=/data/hold/ --max_sec=2400 --max_mb=100 --active=5
Restart=always

[Install]
WantedBy=multi-user.target

Dies hat sich beim Schreiben von benutzerdefinierten Unit-Dateien als praktische Ressource erwiesen:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

verwandte Informationen