Como aguardar um / dev / video0 antes de iniciar um serviço

11

Posso gravar arquivos de unidades, que dependem de uma montagem, porque posso listá-los e adicioná-los a Requires=xxx, como:

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

O que estou tentando fazer é iniciar o serviço quando a webcam estiver conectada ao dispositivo. systemctl list-units | grep video0não retorna nada. Alguém pode me explicar em termos simples, o que faço para garantir isso? O que eu quero que aconteça é o serviço de início, quando /dev/video0, /dev/video1, etc aparecer.

Eu tenho uma pista neste post , de que precisarei escrever uma regra do udev, mas não tenho idéia do que exatamente precisa ser feito aqui. Socorro?

galets
fonte

Respostas:

11

Eu descobri isso. Primeiro, adicione a (s) seguinte (s) linha (s) a um dos arquivos na pasta de regras do udev, usei/lib/udev/rules.d/99-systemd.rules

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

Em seguida, você pode vincular ao (s) dispositivo (s) de vídeo no arquivo da unidade de serviço:

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