小编Ben*_*ell的帖子

将 udev 环境变量传递给 systemd 服务执行

我正在迁移绑定到块设备的更改操作并运行给定脚本的现有 udev 规则。

SUBSYSTEM=="block", ENV{DEVNAME}=="/dev/sr0", ACTION=="change", RUN+="/usr/local/bin/script"
Run Code Online (Sandbox Code Playgroud)

在此配置中,udev 传递了与硬件设备相关的环境变量,例如ID_CDROM_MEDIA-0ID_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 的执行环境,还是需要显式传递参数?

linux udev systemd

5
推荐指数
1
解决办法
5252
查看次数

标签 统计

linux ×1

systemd ×1

udev ×1