Aufgrund dieser Frage und ihrer Antworten habe ich meiner Servicedatei Folgendes hinzugefügt:
Wants=network-online.target
After=docker.service network.target network-online.target
Ich bin auch gelaufen:
systemctl enable NetworkManager-wait-online.service
systemd-networkd-wait-online.service
Und dennoch schlägt meine ExecStartPre
Aufgabe, die verwendet wird git pull origin master
, aufgrund eines scheinbaren Konnektivitätsproblems fehl.
Mar 22 16:17:21 COMPUTER git[1983]: ssh: Could not resolve hostname github.com: Name or service not known
Mar 22 16:17:21 COMPUTER git[1983]: fatal: Could not read from remote repository.
Vermisse ich etwas Offensichtliches? Gibt es einen anderen Dienst, auf den ich warten muss, um ihn nutzen zu können git pull
? (Falls es relevant ist, verwende ich Ubuntu 16.10 und systemd 231.)
networking
systemd
pdoherty926
quelle
quelle
network-online.target
. Möglicherweise müssen Sie Ihre EinheitAfter=NetworkManager.service
(oderAfter=NetworkManager-wait-online.service
) herstellen.Antworten:
Der erste Schritt besteht darin, festzustellen, ob Sie
NetworkManager
oder verwendensystemd-networkd
. Aktivieren Siewait-online
für die von Ihnen verwendete (vorausgesetztsystemd-networkd
für dieses Beispiel):Lassen Sie Ihren Dienst nach dem
wait-online
Dienst beginnen:(erfordert ist eine strengere Variante von
wants
, in diesem Fall scheint es, als ob Sie die harte Abhängigkeit wollen).Dies sollte dazu führen, dass Ihr Dienst gestartet wird, nachdem das Netzwerk garantiert ist.
Alternativ (oder in Verbindung mit der vorherigen Lösung) können Sie den Dienst so konfigurieren, dass er neu gestartet wird, wenn er mithilfe des
Restart=
Flags fehlschlägt :https://www.freedesktop.org/software/systemd/man/systemd.service.html#Restart=
Dies ist möglicherweise die bessere Methode, da dadurch der Startvorgang nicht verlangsamt wird ( https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#cutthecraphowdoimakenetwork.targetworkforme - die Verwendung
wait-online
kann die Startzeit erheblich verlangsamen) Wenn Sie sich Sorgen darüber machen, was der Dienst bei einem Ausfall tun könnte, wählen Sie Option 1 oder beides.quelle