Systemd path

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Systemd path

Beitrag von wanne » 09.05.2017 16:50:30

Hi ich versuche gerade einen Systemd service zu machen, der auf einen Pfad hört:
/etc/systemd/system/ib0.path

Code: Alles auswählen

[Unit]
Description=Monitors ib0 mode
[Path]
PathExists=/sys/class/net/ib0/mode
Unit=ib0mode.service
[Install]
WantedBy=multi-user.targe
/etc/systemd/system/ib0mode.service

Code: Alles auswählen

[Unit]
Description=Sets the mode for ib0
[Service]
Type=oneshot
ExecStart=/bin/echo connected > /sys/class/net/ib0/mode
Das Problem: Das läuft nicht ab startup. Versuche ich das zu enablen kommt das:

Code: Alles auswählen

systemctl enable ib0.path
Failed to execute operation: Invalid argument
PS: Ja, ich weiß, eigentlich gehört das nach udev. Aber irgend wie scheint Mellanox das zu verkacken: Wenn ib0 hoch kommt, existiert /sys/class/net/ib0/mode noch nicht.
Sollte irgend jemand eine schönere Variante haben: Immer her damit.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Systemd path

Beitrag von smutbert » 09.05.2017 17:19:27

Code: Alles auswählen

WantedBy=multi-user.targe
statt ...=target ist nur ein Schreibfehler im Forum, oder?

Laut manpage verwenden path-Units inotify und inotify arbeitet nicht so gut oder gar nicht mit manchen virtuellen Dateisystemen zusammen - zumindest hat es das mit sysfs nicht getan als ich einmal so etwas auf dem Cubietruck versucht habe.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemd path

Beitrag von scientific » 09.05.2017 23:26:13

Würd auch sagen, dass der Rechtschreibfehler ein Problem ist.
Aber ob die Fehlermeldung dazu passt, kann ich grad nicht beurteilen.

Lg
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemd path

Beitrag von scientific » 09.05.2017 23:27:47

Und warum, "Type=oneshot"?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Systemd path

Beitrag von wanne » 10.05.2017 01:29:04

smutbert hat geschrieben:statt ...=target ist nur ein Schreibfehler im Forum, oder?
Ja. Beim copy and paste den letzten Buchstaben nicht markiert.
smutbert hat geschrieben:Laut manpage verwenden path-Units inotify und inotify arbeitet nicht so gut oder gar nicht mit manchen virtuellen Dateisystemen zusammen
Danke für den Hinweis.
Darf man fragn, wie du das damals dann anders gelöst hast?
scientific hat geschrieben:Und warum, "Type=oneshot"?
https://www.freedesktop.org/software/sy ... rvice.html
rot: Moderator wanne spricht, default: User wanne spricht.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemd path

Beitrag von scientific » 10.05.2017 07:24:05

Zu inotify und sysfs:

http://linux-fsdevel.vger.kernel.narkiv ... tify-sysfs

Ich hoffe du kannst Englisch.
Kurz zusammengefasst: lass es. Udev ist das Werkzeug, das du suchst.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Systemd path

Beitrag von wanne » 10.05.2017 08:30:27

scientific hat geschrieben:Kurz zusammengefasst: lass es. Udev ist das Werkzeug, das du suchst.
wanne hat geschrieben:Ja, ich weiß, eigentlich gehört das nach udev. Aber irgend wie scheint Mellanox das zu verkacken: Wenn ib0 hoch kommt, existiert /sys/class/net/ib0/mode noch nicht.
Das ist das nette an diesen schönen neuen ich will aber nicht die bash Tools. Früher hätte man da halt ein sleep 1 davor gehängt. War nie der angestrebte weg, aber es hat funktioniert.
Jetzt hast du halt entweder den perfekten weg oder gar keinen. Toller Fortschritt!
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Systemd path

Beitrag von smutbert » 10.05.2017 08:41:35

Bei mir gings um Änderungen an den via sysfs repräsentierten gpios. Dafür gab es insofern keine Lösung, weil das ganze über die normalen gpio-Treiber viel zu langsam war.
Als Übergangslösung habe ich eine Schleife in einem shell-Skript verwendet (natürlich erst recht langsam) und dann auf eine Bibliothek zum Zugriff auf die gpios umgestellt, die die gpio-Treiber nicht verwendet und damit auch das sysfs links liegen läßt.

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: Systemd path

Beitrag von wanne » 10.05.2017 09:32:10

smutbert hat geschrieben:gpio-Treiber viel zu langsam war.
So als kleiner Tipp. Der gpio-Treiber ist zimelich flott. (Weit schneller als das ein shellscript schafft.) Lediglich gewisse (Python) Bibliotheken verkacken das derartig extrem.
Du kannst mal einfach direkt per C auf die Dateien zugreifen.
rot: Moderator wanne spricht, default: User wanne spricht.

Antworten