【问题标题】:How to create a udev rule to run a script when usb connects如何创建 udev 规则以在 USB 连接时运行脚本
【发布时间】:2022-09-27 15:26:38
【问题描述】:

我想在 USB 连接时运行 python 或 shell 脚本。所以我需要为此创建一个 udev 规则。

  • 好,去吧!是什么阻止你这样做?也许检查How to Ask 并寻找一些教程或udev 文档。

标签: linux udev


【解决方案1】:

您可以添加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 的选项 ExecStartExecStop
该脚本接受 2 个参数 add|remove 和设备文件的名称(sdasdbsdb1 等)。 因此,usb-mount.sh 在您插入(add 参数)或移除(remove 参数)USB 存储设备时会做一些事情。

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    相关资源
    最近更新 更多