如何在每次插入 USB 设备时运行 Bash 脚本?

max*_*att 5 bash usb 18.04

我使用的是 Ubuntu 18.04,每次插入新的 USB 设备时都需要运行 Bash 脚本(与设备类型相互依赖)。

PS:我发现其他答案能够适用于指定的 USB 设备,但我需要适用于任何可能的 USB 设备。

小智 6

从 udev 规则启动 systemd .service

udev monitor允许您监视内核 uevent 并将 devpath 打印到控制台,然后可以使用它来udevadm info -a --path=''打印链上所有设备的所有 sysfs 属性。

udevadm monitor --environment --udev允许您在规则处理后监视 udev 事件设置的环境变量。

$ cat /etc/udev/rules.d/99-usb-autorun.rules
Run Code Online (Sandbox Code Playgroud)
# Start USB autorun systemd .service
ENV{DEVTYPE}=="usb_device", \
TAG+="systemd", ENV{SYSTEMD_WANTS}="usb_autorun.service"
Run Code Online (Sandbox Code Playgroud)

(不要忘记重新加载您的规则udevadm control --reload && udevadm trigger)。

...和​​/etc/systemd/system/usb_autorun.service

[Unit]
Description=USB Autorun.

[Service]
Type=oneshot
ExecStart=/opt/bin/usb_autorun.sh
Run Code Online (Sandbox Code Playgroud)