我想在我的 Linux 机器上插入设备时执行脚本。例如,xinput
在鼠标或某个驱动器上的备份脚本上运行。
我看过很多关于这方面的文章,最近一次是这里和这里。但我就是无法让它工作。
下面是一些试图获得至少某种响应的简单示例。
/etc/udev/rules.d/test.rules
#KERNEL=="sd*", ATTRS{vendor}=="*", ATTRS{model}=="*", ATTRS{serial}=="*", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=="add", "SUBSYSTEM=="usb", ATTRS{model}=="My Book 1140 ", ATTRS{serial}=="0841752394756103457194857249", RUN+="/usr/local/bin/test.sh"
#ACTION=="add", "SUBSYSTEM=="usb", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=={add}, RUN+="/usr/local/bin/test.sh"
KERNEL=="sd*", RUN+="/usr/local/bin/test.sh"
KERNEL=="*", RUN+="/usr/local/bin/test.sh"
Run Code Online (Sandbox Code Playgroud)
/usr/local/bin/test.sh
#!/usr/bin/env bash
echo touched >> /var/log/test.log
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
echo ${DEVICE} >> /var/log/test.log
fi
Run Code Online (Sandbox Code Playgroud)
规则文件夹由监视inotify
并应立即激活。我不断地重新插入我的键盘、鼠标、平板电脑、记忆棒和 USB 驱动器,但没有。没有触及日志文件。
现在,至少知道某些事情正在起作用的最简单方法是什么?使用有效的方法比使用无效的方法更容易。
我试图xinput
在连接 USB 输入设备时设置其属性。我见过需要脚本在后台运行并轮询 USB 设备的解决方案,但我想找到一种触发方法,而不是涉及用户空间轮询的方法。
我尝试创建一个在设备连接上运行脚本的规则,但触发规则时udev
,连接的设备似乎尚不可见。这似乎是事件的恒定顺序,而不是竞争条件,因为向脚本添加命令也会延迟设备在 中列出。xinput
udev
add
sleep
xinput list
有没有可靠的方法来设置xinput
设备连接时的属性?