Inicie o aplicativo da webcam com o Systemd no Linux

1

Eu tenho um aplicativo simples que transmite vídeos com uma webcam chamada "streamer". Gostaria de iniciar o "streamer" quando meu dispositivo Linux inicializar com o systemd.

Em seguida, tenho o seguinte arquivo de serviço systemd /lib/systemd/system/streamer.service

[Unit]
Description=Webcam Service

[Service]
ExecStart=/usr/bin/streamer

[Install]
WantedBy=multi-user.target

Quando eu executo isso manualmente, funciona como:

systemctl start streamer

No entanto, quando eu habilito o script e reinicializo, ele não é iniciado automaticamente:

systemctl enable streamer
reboot

Como posso fazer isso funcionar com minha webcam?

    
por Frederick Ollinger 12.06.2018 / 02:33

1 resposta

1

Eu tive que adicionar uma regra do udev para detectar a câmera, /etc/udev/rules.d/webcam.rules

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

Em seguida, fiz as seguintes alterações em meu arquivo de serviço, /lib/systemd/system/streamer.service

[Unit]
Description=Webcam Service
BindsTo=dev-video1.device
After=dev-video1.device

[Service]
ExecStart=/usr/bin/streamer

A razão para isto está na manpage do systemd.unit:

link

"Quando usado em conjunto com After = na mesma unidade, o comportamento de BindsTo = é ainda mais strong. Neste caso, a unidade ligada a estritamente tem que estar no estado ativo para que esta unidade também esteja no estado ativo."     [Instalar]     WantedBy = multi-user.target

    
por 12.06.2018 / 02:38