So warten Sie auf ein / dev / video0, bevor Sie einen Dienst starten

9

Ich kann Unit-Dateien schreiben, die von einem Mount abhängen, weil ich sie auflisten und dann ergänzen kann Requires=xxx, wie zum Beispiel:

# systemctl list-units | grep data
mount-data.service    loaded active exited    Manage the data partition

Ich versuche, den Dienst zu starten, wenn die Webcam an das Gerät angeschlossen ist. systemctl list-units | grep video0gibt nichts zurück. Kann mir jemand in einfachen Worten erklären, was mache ich, um das sicherzustellen? Was ich passieren soll, ist Anfang Dienst , wenn /dev/video0, /dev/video1usw. erscheinen.

Ich habe einen Hinweis von diesem Beitrag erhalten , dass ich eine udev-Regel schreiben muss, aber ich habe keine Ahnung, was genau hier getan werden muss. Hilfe?

Galets
quelle

Antworten:

10

Ich habe das herausgefunden. Fügen Sie zunächst die folgenden Zeilen zu einer der von mir verwendeten Dateien im Ordner udev rule hinzu/lib/udev/rules.d/99-systemd.rules

KERNEL=="video0", SYMLINK="video0", TAG+="systemd"
KERNEL=="video1", SYMLINK="video1", TAG+="systemd"

Anschließend können Sie in der Datei der Serviceeinheit eine Verbindung zu Videogeräten herstellen:

[Unit]
BindsTo=dev-video0.device
After=dev-video0.device
Galets
quelle