Como iniciar um serviço do systemd quando um DVD é inserido?

1

Estou tentando escrever um serviço systemd simples que é iniciado quando insiro um DVD na minha unidade de DVD-ROM. No entanto, meu serviço nunca é iniciado, embora eu veja o SYSTEMD_WANTS relevante durante a execução de udevadm monitor --env . Eu posso iniciar o serviço manualmente e funciona como esperado.

Veja o que eu tenho:

/etc/systemd/system/test.service :

[Unit]
Description=just touch /tmp/pizza

[Service]
Type=oneshot
ExecStart=/usr/sbin/touch /tmp/pizza
RemainAfterExit=yes
ExecStop=/usr/sbin/rm -v /tmp/pizza

/etc/udev/rules.d/98-dd-one-from-udev.rules :

KERNEL=="sr[0-9]*", ENV{DEVTYPE}=="disk", TAG+="systemd", ENV{SYSTEMD_WANTS}+="test.service"

Quando inicio meu serviço manualmente com sudo systemctl start test.service , vejo o arquivo /tmp/pizza aparecer, bem como as coisas felizes esperadas em journalctl .

Quando monitoro a saída de udevadm monitor --env , vejo que minha variável de ambiente SYSTEMD_WANTS está sendo definida como esperado:

...
ID_SERIAL=MATSHITA_UJDA750_DVD_CDRW-0:0
ID_TYPE=cd
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=MATSHITA
ID_VENDOR_ENC=MATSHITA
ID_VENDOR_ID=05e3
MAJOR=11
MINOR=1
SEQNUM=1822
SUBSYSTEM=block
SYSTEMD_WANTS=test.service  <--- Woohoo!
TAGS=:seat:systemd:uaccess:
USEC_INITIALIZED=6417

E, no entanto, meu serviço nunca começa ...

Qual link faltando aqui?

Por que vale a pena, estou executando o Arch Linux com systemd versão 218.

    
por mgalgs 09.01.2015 / 08:28

1 resposta

1

SYSTEMD_WANTS lida apenas com eventos "adicionar" / "remover" . No caso de unidades de CD, esses eventos são enviados apenas para o próprio dispositivo , não para mídia - para que o serviço seja iniciado quando a unidade de DVD-ROM for detectada e parou quando a unidade está desconectada, independentemente do que está dentro dela.

As alterações de mídia são relatadas como eventos de "alteração" e o systemd não as manipula, já que seria necessário entender as propriedades específicas de cada tipo de dispositivo.

udevadm monitor --udev
    
por 09.01.2015 / 10:50