仅在安装 USB 驱动器时运行的 Systemd 服务

仅在安装 USB 驱动器时运行的 Systemd 服务

我一直在寻找一种优雅的方法来自动化一个非常繁琐的过程。

这是我想要实现的工作流程:

  1. 插入U盘(单分区)
  2. sdX1 通过一些安装选项自动安装到 /mnt/data
  3. 一些 systemd 服务已启动(它们与挂载点中的文件交互)。
  4. 我手动发出命令来卸载驱动器。
  5. 服务自动终止。

我一直在尝试传输,所以我有以下服务:

[Unit]
Description=Transmission BitTorrent Daemon
After=network.target
After=mnt-data.mount

[Service]
User=transmission
Type=notify
ExecStart=/usr/bin/transmission-daemon -f --log-error
ExecReload=/bin/kill -s HUP $MAINPID
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
WantedBy=mnt-data.mount

这是我的 udev 规则文件:

SUBSYSTEMS=="usb", ATTRS{idProduct}=="1153", ACTION=="add", ENV{SYSTEMD_WANTS}=="transmission.service"

我以为在安装驱动器时设法启动服务,但我无法让它发挥作用。

我感谢您的帮助。

编辑:这似乎比我想象的要困难一些,因为 udisks 似乎不与 systemd 对话。当我通过systemctl stop mnt-data.mount服务卸载驱动器时,该服务会停止,但如果我以任何其他方式卸载,该服务将继续运行。

相关内容