我正在使用 Ubuntu 18.04,每次插入新的 USB 设备(与设备类型相互依赖)时我都需要运行一个 Bash 脚本。
附言:我发现其他答案可以适用于指定的 USB 设备,但我需要适用于任何可能的 USB 设备。
答案1
从 udev 规则启动 systemd.service
udev monitor
允许您监视内核 uevents 并将 devpaths 打印到控制台,然后可以使用它来udevadm info -a --path=''
打印链中所有设备的所有 sysfs 属性。
udevadm monitor --environment --udev
让您监视规则处理后由 udev 事件设置的环境变量。
$ cat /etc/udev/rules.d/99-usb-autorun.rules
# Start USB autorun systemd .service
ENV{DEVTYPE}=="usb_device", \
TAG+="systemd", ENV{SYSTEMD_WANTS}="usb_autorun.service"
(不要忘记重新加载您的规则udevadm control --reload && udevadm trigger
)。
...和/etc/systemd/system/usb_autorun.service:
[Unit]
Description=USB Autorun.
[Service]
Type=oneshot
ExecStart=/opt/bin/usb_autorun.sh
答案2
我开发了一个 Python 脚本,用于监听特定设备并在设备连接时执行操作,例如:
pip install udev_monitor
udev_monitor.py --devices 0665:5161 --filters=usb --action /root/some_script.sh
该操作将作为参数找到设备。
你可以找到完整的来源这里
还有一个 systemd 单元文件和一个配置文件示例,因此您可以运行监控特定设备的服务。