Я пытаюсь написать простой systemd
сервис, который запускается, когда я вставляю DVD в привод DVD-ROM. Однако мой сервис никогда не запускается, даже если я вижу соответствующий SYSTEMD_WANTS
при запуске udevadm monitor --env
. Я могу запустить службу вручную, и она работает как положено.
Вот что у меня есть:
/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"
Когда я запускаю сервис вручную с помощью sudo systemctl start test.service
я вижу, как появляется файл /tmp/pizza
, а также ожидаемые счастливые вещи в journalctl
.
Когда я контролировать выход udevadm monitor --env
я вижу , что моя переменная SYSTEMD_WANTS
среда создается как ожидалось:
...
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
И все же мой сервис никогда не запускается ...
Какую связь я здесь пропускаю?
Что бы это ни стоило, я использую Arch Linux с systemd
версии 218.