Discussion:
[systemd] Service-Start verzögern bis Device da?
(zu alt für eine Antwort)
Marc Haber
2024-10-08 16:09:28 UTC
Permalink
Hallo,

ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.

Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
auf:

|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
|
|[Service]
|ExecStart=/usr/bin/vzlogger -c /etc/vzlogger.conf
|ExecReload=/bin/kill -USR1 $MAINPID
|StandardOutput=null
|User=vzlogger
|Group=vzlogger
|
|[Install]
|WantedBy=multi-user.target

Das tut aber nicht, der vzlogger fällt nach wie vor beim Start auf die
Schnauze mit:

open(/dev/USBserialNetz): No such file or directory

Wie herum muss ich systemd halten damit er mir den vzlogger erst
startet wenn die USB-Devices da sind?

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Tim Ritberg
2024-10-08 16:42:44 UTC
Permalink
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
|
|[Service]
|ExecStart=/usr/bin/vzlogger -c /etc/vzlogger.conf
|ExecReload=/bin/kill -USR1 $MAINPID
|StandardOutput=null
|User=vzlogger
|Group=vzlogger
|
|[Install]
|WantedBy=multi-user.target
Das tut aber nicht, der vzlogger fällt nach wie vor beim Start auf die
open(/dev/USBserialNetz): No such file or directory
Wie herum muss ich systemd halten damit er mir den vzlogger erst
startet wenn die USB-Devices da sind?
Grüße
Marc
So?
http://blog.fraggod.net/2012/06/16/proper-ish-way-to-start-long-running-systemd-service-on-udev-event-device-hotplug.html

Tim
Marc Haber
2024-10-09 05:41:50 UTC
Permalink
Post by Tim Ritberg
http://blog.fraggod.net/2012/06/16/proper-ish-way-to-start-long-running-systemd-service-on-udev-event-device-hotplug.html
Die Device wird nicht hotgeplugged (sie stecken beim Systemstart und
werden auch nicht entfernt), und es sind zwei. Das würde ich ungerne
von udev abhängig machen, es würde völlig reichen auf die Dateien zu
warten. Der tiefste Unterschied dürfte sein dass der Mechanismus nicht
damit rechnen muss, dass die Devices irgendwann spontan veschwinden.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Lutz Falke
2024-10-08 17:21:07 UTC
Permalink
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
^^
Äh, sollte da nicht ein '=' stehen?

Lutz
Marc Haber
2024-10-09 05:42:11 UTC
Permalink
Post by Lutz Falke
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
^^
Äh, sollte da nicht ein '=' stehen?
ARGL. Danke. Ich melde mich ob das geholfen hat.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Marc Haber
2024-10-10 06:25:16 UTC
Permalink
Post by Marc Haber
Post by Lutz Falke
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
^^
Äh, sollte da nicht ein '=' stehen?
ARGL. Danke. Ich melde mich ob das geholfen hat.
Also zwei Systemstarts lang hat es schon funktioniert.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Christian Garbs
2024-10-10 07:44:39 UTC
Permalink
Mahlzeit!
Post by Lutz Falke
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
^^
Äh, sollte da nicht ein '=' stehen?
Huch, sollte da nicht eine Fehlermeldung bei "systemctl edit" fliegen?
Oder beim Ändern von Hand irgendwie die Unit nicht geladen werden?

Das erschreckt mich jetzt gerade, dass das ohne Meckereien durchrutscht.

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
2 Pi || ! 2 Pi <- == ?
Marc Haber
2024-10-10 09:02:21 UTC
Permalink
Post by Christian Garbs
Post by Lutz Falke
Post by Marc Haber
Hallo,
ich möchte meinen vzlogger erst starten, wenn die
USB-to-Serial-Adapter da sind und von udev umbenannt wurden.
Kurze Stackoverflow-Recherche zeigt, dass es für Devicenodes implizit
generierte .device Units gibt. Also, kurz vlogger.service modifiziert
|[Unit]
|Description=vzlogger
|After=syslog.target network.target ntp.service systemd-udev-settle.service dev-USBserialNetz.device dev-USBSerialWP.device
|Requires: dev-USBserialNetz.device dev-USbserialWP.device
^^
Äh, sollte da nicht ein '=' stehen?
Huch, sollte da nicht eine Fehlermeldung bei "systemctl edit" fliegen?
Oder beim Ändern von Hand irgendwie die Unit nicht geladen werden?
Das erschreckt mich jetzt gerade, dass das ohne Meckereien durchrutscht.
Jedenfalls ist mir die Meckerei nicht ins Gesicht gesprungen.
Vielleicht wäre es ein nettes Feature, Syntaxfehler in Units in
systemctl status mit anzuzeigen, _DA_ guckt man nämlich rein.

Grüße
Marc
--
----------------------------------------------------------------------------
Marc Haber | " Questions are the | Mailadresse im Header
Rhein-Neckar, DE | Beginning of Wisdom " |
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 6224 1600402
Lesen Sie weiter auf narkive:
Loading...