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

问题描述 投票:0回答:1

只要插入 USB,我就需要运行 Python 或 shell 脚本。

所以我需要为此创建一个 udev 规则。

linux udev
1个回答
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"

前面是systemctl启动和停止systemd

服务
[email protected]的udev规则文件。 通过此服务文件,您可以启动所需的 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。 该脚本接受两个参数:

  1. add
    |
    remove
  2. USB 设备文件的名称(
    sda
    sdb
    sdb1
    等)。

所以 usb-mount.sh 在您插入(

ACTION==add
在 udev 规则中)或移除(
ACTION==remove
在 udev 规则中)USB 存储设备时被调用。

© www.soinside.com 2019 - 2024. All rights reserved.