当安装始终连接的驱动器时运行脚本

当安装始终连接的驱动器时运行脚本

如何触发脚本运行始终保持连接驱动器是否已安装?

我已尝试过udev,具体制定了一条99-local.rules规则/etc/udev/rules.d

KERNEL=="mmcblk0",ACTION=="mount",RUN+="/path/to/script.sh"

并重新加载规则。但是驱动器安装后,脚本不会运行。

请注意,驱动器是SD卡,因此mmcblk0得名块设备。它是不是USB 驱动器,不是正在热插拔。

答案1

事实证明,使用 实现这一点并不容易udev。使用udevadm monitor -p我验证了,安装时,我的 SD 卡不会ACTION=="mount"在 中触发任何事件udev。我读到某处说该mount事件已被弃用或删除,如果属实,这就可以解释这一点。udev毕竟, 应该管理热插拔。

此外,udev触发脚本必须非常快速地完成,因为它们udev在运行时会阻塞。对于备份等重要任务来说,这并不理想。

我通过使用for编写systemd服务文件实现了我的目标:/etc/systemd/system/ExecStart.mount

[Unit]
Description=Script to run when drive mounted at /path/to/Stuff
Requires=path-to-Stuff.mount
After=path-to-Stuff.mount

[Service]
ExecStart=/path/to/script.sh
Type=forking

[Install]
WantedBy=path-to-Stuff.mount

尽管需要指定挂载点,但可以正常工作。

相关内容