我正在迁移绑定到块设备的更改操作并运行给定脚本的现有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
此时,服务在更改事件上运行,但由udev中的RUN命令传递的环境变量不会传递给服务的执行。
是否可以将环境从udev传递到systemd的执行环境,还是需要显式传递参数?