Comment attendre un / dev / video0 avant de démarrer un service

11

Je peux écrire des fichiers d'unité, qui dépendent d'un montage, car je peux les répertorier puis les ajouter Requires=xxx, tels que:

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

Ce que j'essaie de faire, c'est de démarrer le service lorsque la webcam est connectée à l'appareil. systemctl list-units | grep video0ne renvoie rien. Quelqu'un peut-il m'expliquer en termes simples, que dois-je faire pour m'en assurer? Ce que je veux arriver est un service de démarrage quand /dev/video0, /dev/video1etc. apparaissent.

J'ai eu une idée de ce post , que je devrai écrire une règle udev, mais je n'ai aucune idée de ce qui doit être fait exactement ici. Aidez-moi?

galets
la source

Réponses:

11

J'ai compris cela. Tout d'abord, ajoutez les lignes suivantes à l'un des fichiers du dossier de règles udev, j'ai utilisé/lib/udev/rules.d/99-systemd.rules

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

Vous pouvez ensuite vous lier aux périphériques vidéo dans le fichier d'unité de service:

[Unit]
BindsTo=dev-video0.device
After=dev-video0.device
galets
la source