【发布时间】:2022-09-27 15:26:38
【问题描述】:
我想在 USB 连接时运行 python 或 shell 脚本。所以我需要为此创建一个 udev 规则。
-
好,去吧!是什么阻止你这样做?也许检查How to Ask 并寻找一些教程或udev 文档。
我想在 USB 连接时运行 python 或 shell 脚本。所以我需要为此创建一个 udev 规则。
您可以添加udev 规则文件。例如,您可以添加文件/etc/udev/rules.d/99-local.rules
它的内容可以是:
KERNEL=="sd*", SUBSYSTEMS=="block", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"
KERNEL=="sd*", SUBSYSTEMS=="block", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"
前面是一个udev规则文件,通过systemctl启动systemd服务usb-mount@.service。
在服务文件中,您可以启动 python 或 bash 脚本。
服务文件的示例如下:
[Unit]
Description=Mount USB Drive on %i
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/usb-mount.sh add %i
ExecStop=/usr/bin/usb-mount.sh remove %i
在单元文件中,您可以找到启动 bash 脚本 /usr/bin/usb-mount.sh 的选项 ExecStart 和 ExecStop。
该脚本接受 2 个参数 add|remove 和设备文件的名称(sda、sdb、sdb1 等)。
因此,usb-mount.sh 在您插入(add 参数)或移除(remove 参数)USB 存储设备时会做一些事情。
【讨论】: