当USB存储插入时,我如何创建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规则文件,用于启动和停止systemd服务usb-mount@.service通过CCD_ 1。通过这个服务文件,您可以启动所需的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。脚本接受两个参数:

  1. add|remove
  2. USB设备文件的名称(sdasdbsdb1等(

因此,当插入(udev规则中的ACTION==add(或移除(udev法则中的ACTION==remove(usb存储设备时,会调用usb mount.sh

最新更新