Я переношу существующее правило udev, которое связано с действием изменения блочного устройства, и запускает данный скрипт.
SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", RUN+="/usr/local/bin/script"
В этой конфигурации udev передал переменные среды, связанные с аппаратным устройством, такие как ID_CDROM_MEDIA-0
и ID_FS_LABEL
. С тех пор я обновил правило udev, чтобы использовать systemd для запуска службы при смене оборудования.
SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", TAG+="systemd", ENV{SYSTEMD_WANTS}=="drive-change.service"
Файл службы systemd:
[Unit]
Description=changes to dvd drive
[Service]
Type=oneshot
ExecStart=/usr/local/bin/script
[Install]
WantedBy=multi-user.target
На этом этапе служба запускается при событиях изменения, но переменные среды, передаваемые командой RUN в udev, не передаются в выполнение службы.
Можно ли передать среду от udev в среду выполнения systemd или мне нужно явно передать параметры?