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

Joh*_*ith 5 automounting mount systemd

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

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

无论如何,systemd 单元中是否有不那么具体,允许ExecStart在任何成功(自动)挂载后使用?

小智 0

我只能指路。

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

这会触发我的单位 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
Run Code Online (Sandbox Code Playgroud)

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