如何在每次 systemd 自动挂载后执行脚本?

如何在每次 systemd 自动挂载后执行脚本?

我正在尝试设置一个系统,以便每次安装任何 USB 存储设备时都会执行脚本(在本例中,由 systemd 自动安装)。基于一些参考资料这里,这里这里,systemd 允许在安装特定设备后执行自定义脚本,但这些脚本可以是:

  • 需要特定的设备或安装点。
  • 使用 udev,它会过早触发并保留安装过程。
  • 使用审计或日志,这不是很令人满意。

无论如何都有吗较少的ExecStart具体在 systemd 单元中,允许在成功(自动)安装后使用?

答案1

我只能指路。

cat /etc/udev/rules.d/bb-clam.rules 
KERNEL=="sd[b-z]*", SUBSYSTEMS=="usb", TAG+="systemd", ENV{SYSTEMD_WANTS}="clamtk.service"

这会触发我的单位 clamtk.servicecat /etc/systemd/system/clamtk.service

[Unit]
Description=clamtk
Requires=dev-media0.device

[Service]
Type=simple
User=alex
ExecStart=/bin/bash -c "/usr/local/bin/clam"
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=15s

[Install]
WantedBy=multiuser.target

但是,只有当您的设备以用户身份启动并且该设备也针对 USB 硬盘驱动器触发时,此功能才有效。

相关内容