View previous topic :: View next topic |
Author |
Message |
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3534 Location: Berlin
|
Posted: Wed Nov 20, 2024 2:55 pm Post subject: Dienst erst starten, wenn Netzwerk verbunden ist |
|
|
Bei meinem Telekom-Anschluss gibt es ein Problem, welches auch zeitnah nicht behoben wird (langsame Verbindung mit Verbindungsunterbrechungen). Ich habe festgestellt (kann auch Zufall sein), das bei deaktiviertem nordvpnd.service Networkmanager schnell eine Verbindung zum kabelgebundenen Netzwerk herstellt. (Also systemctl enable NetworkManager, systemctl disable nordvpnd.service, systemctl disable NetworkManager-wait-online.service). Wenn ich nordvpn als Autostart aktiviere (systemctl enable nordvpnd.service) dauert es bis zu 10 Minuten, bis eine Verbindung aufgebaut ist. Starte ich nordvpn manuell, wenn NetworkManager eine Verbindung aufgebaut hat, funktioniert das Zusammenspiel besser. Gibt es eine Möglichkeit, das nordvpn verzögert wird, bis Networkmanager eine Verbindung aufgebaut hat? Oder gibt es nur die Variante den Service zeitversetzt zu starten. (ExecStartPre=/bin/sleep 30 wenn das richtig ist.) Laut der Seite ist das die einzige Möglichkeit: https://www.bastlerseite.at/service-unter-linux-verzoegert-starten/ Aber vielleicht hat jemand eine andere Lösung.
nordvpnd.service Code: | [Unit]
Description=NordVPN Daemon
Requires=nordvpnd.socket
After=network-pre.target
[Service]
ExecStart=/usr/sbin/nordvpnd
NonBlocking=true
KillMode=process
Restart=on-failure
RestartSec=5
# centos7 RuntimeDirectory ignored
RuntimeDirectory=nordvpn
RuntimeDirectoryMode=0750
# User=root
Group=nordvpn
[Install]
WantedBy=default.target |
Neu: Code: | [Unit]
Description=NordVPN Daemon
Requires=nordvpnd.socket
After=network-pre.target
[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/sbin/nordvpnd
NonBlocking=true
KillMode=process
Restart=on-failure
RestartSec=5
# centos7 RuntimeDirectory ignored
RuntimeDirectory=nordvpn
RuntimeDirectoryMode=0750
# User=root
Group=nordvpn
[Install]
WantedBy=default.target |
|
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1972 Location: Schweiz
|
Posted: Wed Nov 20, 2024 3:06 pm Post subject: |
|
|
Es gibt das "network-online.target" welches du als Abhängigkeit hinterlegen könntest.
Wenn der NetworkManager richtig eingerichtet ist sollte dieses Target erst auf den Status "active" wechseln wenn eine funktionierende Netzwerkverbindung aufgebaut wurde.
Weitere Informationen dazu findest du zum Beispiel in der Manpage: NetworkManager-wait-online.service.8 _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW
Last edited by schmidicom on Wed Nov 20, 2024 3:08 pm; edited 1 time in total |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1713
|
Posted: Wed Nov 20, 2024 3:07 pm Post subject: |
|
|
Siehe https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
TLDR:
Code: | After=network-online.target
Wants=network-online.target |
einfügen könnte helfen.
Das sleep 30 ist für meinen geschmack etwas krude, aber sollte auch gehen.
EDIT:
Ich sehe gerade, dass du da After=network-pre.target stehen hast. Ich glaube, dass ist so nicht gedacht, laut der von mir verlinkten Seite ist network-pre.target dafür gedacht mit Before= verwendet zu werden, die Beschreibung klingt nicht so, als ob das mit After= gut funktioniert. Das solltest du am besten rausmachen und durch die zwei anderen Zeilen ersetzen. |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3534 Location: Berlin
|
Posted: Wed Nov 20, 2024 4:43 pm Post subject: |
|
|
So? Code: | [Unit]
Description=NordVPN Daemon
Requires=nordvpnd.socket
#After=network-pre.target
After=network-online.service
Wants=network-online.service
[Service]
ExecStart=/usr/sbin/nordvpnd
NonBlocking=true
KillMode=process
Restart=on-failure
RestartSec=5
# centos7 RuntimeDirectory ignored
RuntimeDirectory=nordvpn
RuntimeDirectoryMode=0750
# User=root
Group=nordvpn
[Install]
WantedBy=default.target | Oder soll das After=network-pre.target stehen bleiben?
PS: Ich hatte etwas überlesen. Ich war der Meinung, das nur bei NetworkManager älter als 0.9.10 NetworkManager-wait-online.service erforderlich ist. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5320
|
Posted: Wed Nov 20, 2024 4:57 pm Post subject: |
|
|
NetworkManager-wait-online wird genutzt damit NetworkManager systemd mitteilen kann, dass es eine Verbindung aufgebaut hat und damit network-online.target als erreicht gilt
siehe auch man NetworkManager-wait-online.service _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
Christian99 Veteran
Joined: 28 May 2009 Posts: 1713
|
Posted: Wed Nov 20, 2024 6:48 pm Post subject: |
|
|
flammenflitzer wrote: | So? |
ja, so müsste es gehen. |
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1972 Location: Schweiz
|
Posted: Thu Nov 21, 2024 6:57 am Post subject: |
|
|
Was auch noch erwähnenswert wäre ist das beim NetworkManager die Prüfung der Internetverbindung und damit das Verhalten von "NetworkManager-wait-online.service" konfigurierbar ist.
https://wiki.gentoo.org/wiki/NetworkManager#Checking_connectivity _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
|