Ich habe gerade einen Server von Ubuntu 14.10 auf 15.04 aktualisiert und einige Dienste, die ich über benutzerdefinierte Upstart-Skripte starte, werden nicht mehr ausgeführt.
Ich verstehe, dass ich sie als systemd
Dienste neu schreiben muss , aber der Gedanke, das gesamte systemd
System über Nacht zu lernen , ist ein wenig entmutigend.
Das Startskript wird einfach autossh
beim Start gestartet, und ich habe einige andere ähnliche Skripte, mit denen lang laufende Prozesse gestartet werden.
#/etc/init/autossh.conf
description "Maintain a permanent SSH tunnel to <other_server>"
start on started mountall
stop on shutdown
exec autossh -N other_server
Wie kann ich dies als systemd
Service umschreiben?
Antworten:
die erste Regel für die Migration zu systemd
Zu diesem Zeitpunkt, im Jahr 2015, hat es höchstwahrscheinlich bereits jemand getan.
systemd gibt es schon seit einigen Jahren. Und es gab eine ganze Heimindustrie von Leuten, die Akten geschrieben und veröffentlicht haben. Insbesondere GitHub scheint Repositories von Sammlungen von Serviceeinheiten anzulocken.
In der Tat taucht das einfache Durchsuchen des WWW nach
autossh.service
(als Ausdruck) auf:eine Vorlageneinheit
Das heißt, wie ich bereits an mehreren Stellen in StackExchange ausgeführt habe, ist diese Art der Migration kein mechanistischer Prozess, und manchmal führt die bloße automatische Übersetzung von allem, was in einer Unit-Datei enthalten ist, zu falschen oder zumindest schlechten Ergebnissen. In diesem Fall
autossh
ist bei einer Schabloneneinheit positiv zu vermerken , dass sie in tatsächliche Serviceeinheiten instanziiert wird, die durch den Zielnamen parametrisiert sind. Also wie/etc/systemd/system/[email protected]
haben:Erstellen Sie eine Datei mit dem Namen
/etc/autossh/other_server.example.conf
, minimal:Es gelten dann alle üblichen Kontrollen:
systemctl enable autossh@other_server.example
- Ermöglichen, dass eine Instanz beim Booten automatisch gestartet wird.systemctl start autossh@other_server.example
- Starten Sie diese Instanz sofort manuell.systemctl status autossh@other_server.example
- Sehen Sie seinen Status.Und ja, die erste Regel gilt sogar dafür. Auf der Suche kann man feststellen, dass ich von Greg Freemyer bei OpenSUSE um knapp vierzehn Tage geschlagen wurde.
quelle