我正在迁移绑定到块设备的更改操作并运行给定脚本的现有 udev 规则。
SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", RUN+="/usr/local/bin/script"
Run Code Online (Sandbox Code Playgroud)
在此配置中,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"
Run Code Online (Sandbox Code Playgroud)
systemd 服务文件:
[Unit]
Description=changes to dvd drive
[Service]
Type=oneshot
ExecStart=/usr/local/bin/script
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
此时服务在更改事件上运行,但 udev 中 RUN 命令传递的环境变量不会传递给服务的执行。
是否可以将环境从 udev 传递到 systemd 的执行环境,还是需要显式传递参数?