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.