如何在 Linux 中告知何时发现新的 USB 设备?

如何在 Linux 中告知何时发现新的 USB 设备?

除了反复轮询所有硬件并检查变化之外,还有其他方法可以判断 Linux 中何时发现硬件发生变化吗?

例如,我编写了一个脚本来挂载手机存储并备份我拍摄的所有新照片。我希望当我将手机插入 USB 端口时自动运行该脚本。

有没有什么方法可以让我的操作系统(debian jessie)告诉我硬件何时发生变化?

答案1

这是在检测到 USB 驱动器后运行 bash 脚本的方法。

连接您的设备并运行lsusb以检索设备的信息。您应该看到类似以下内容:

$ lsusb
Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC

本例中,设备的供应商 ID 为0bc2,产品 ID 为2100
现在您可以创建UDEV规则。

$sudo vi /etc/udev/rules.d/85-my_usb_device_rule.rules

并添加以下内容:

ACTION=="add", SUBSYSTEM=="usb", SYSFS{idVendor}=="0bc2", SYSFS{idProduct}=="2100", RUN+="/home/myhome/my_script"

/home/myhome/my_script是您的脚本的路径,它可以执行您想要的任何操作。

为了确保检测脚本立即执行,请重新加载规则UDEV

$sudo udevadm control --reload-rules

答案2

每个“文件系统”都有一个可用的 UUID。有些还带有“标签”。(请阅读“man mount”)一旦您连接了 USB 驱动器,您的脚本就会运行。然后,该脚本可以查询新连接的文件系统的 UUID 或标签。有了该标识符,将其与要为该驱动器运行的实际工作脚本进行匹配。我建议使用表 {IDENT} {COMMAND} {COMMENT},这样您只需进行编辑即可将新驱动器添加到处理中。

相关内容