GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie sage ich in der systemd-Dienstdatei, dass USB bereit ist?

Ich habe das noch nie gelöst, aber es scheint, als könnte es gut für "Pfad-basierte Aktivierung" passen.

Anstelle einer "After="-Klausel in Ihrer Servicedatei würden Sie einen .path erstellen Datei, wie in man systemd.path beschrieben .

Finden Sie eine passende Datei unter /dev/bus/usb oder /sys/bus/usb , dessen Vorhandensein anzeigt, dass "USB aktiv ist". Dann haben Sie systemd Überwachen Sie den Dateipfad mit .path Datei, die Sie erstellen. Die .path Datei würde dann Ihren .service aktivieren Datei, wenn die Datei existiert.


Was ich tun würde, ist, eine systemd-Geräteeinheit zu erstellen Verwenden der udev-Regel. Beispiel:Erstellen Sie /etc/udev/rules.d/20-usb-bus.rules mit:

KERNEL=="usb[1-2]", TAG+="systemd"

Beim nächsten Booten (oder Neuladen der udev-Regeln) haben Sie jetzt Ihre Systemgeräteeinheit:

# systemctl status dev-bus-usb-001-001.device
● dev-bus-usb-001-001.device - 2.0 root hub
...
# systemctl status dev-bus-usb-002-001.device
● dev-bus-usb-002-001.device - 3.0 root hub
...

Sie können Ihren Dienst jetzt starten lassen, nachdem der USB-Bus bereit ist, indem Sie Folgendes hinzufügen:

[Unit]
...
After=dev-bus-usb-001-001.device dev-bus-usb-002-001.device

zu Ihrem systemd-Dienst.


Linux
  1. Wie schreibe ich ein Startskript für Systemd?

  2. Wie stellt man Xfs-Daten nach Rm wieder her?

  3. Führen Sie den Systemd-Dienst nach dem Automount aus, aber nachdem darauf zugegriffen wurde?

  4. Linux – Wie verbinde ich ein logisch getrenntes USB-Gerät wieder?

  5. Wie verwendet man Systemd, um einen Dienst neu zu starten, wenn er ausgefallen ist?

Verwalten Sie den Start mit systemd

So führen Sie Container als Systemd-Dienst mit Podman aus

So führen Sie Shell-Skript als Systemd-Dienst in Linux aus

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

So starten Sie einen systemd-Dienst nach der Benutzeranmeldung und stoppen ihn vor der Benutzerabmeldung

systemd-Dienstprotokolle in eine Datei umleiten