linux 如何创建udev规则以在插入USB存储时运行脚本?

cuxqih21  于 2023-05-16  发布在  Linux
关注(0)|答案(1)|浏览(179)

我需要运行一个Python或一个shell脚本,每当USB插入。
所以我需要为此创建一个udev规则。

xa9qqrwz

xa9qqrwz1#

您可以添加 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/ www.example.com * 的选项 ExecStartExecStopusb-mount.sh。该脚本接受两个参数:

  1. add| remove
  2. USB设备文件的名称(sdasdbsdb1等)。
    因此,当您插入(udev规则中的ACTION==add)或删除(udev规则中的ACTION==remove)USB存储设备时,会调用 usb-mount.sh

相关问题