在当前的 Linux 发行版(如 Debian/CentOS/Fedora)下,在 USB 设备插件上自动执行自定义脚本的最先进方法是什么?
例如,如果您想根据 UUID(或设备 ID 等)自动挂载/复制某些文件/卸载 USB 大容量存储设备。
我想在我的 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 驱动器,但没有。没有触及日志文件。
现在,至少知道某些事情正在起作用的最简单方法是什么?使用有效的方法比使用无效的方法更容易。
我的系统必须自动挂载 USB 设备;如何在插入 USB 设备时收到通知?我在哪里可以阅读有关此主题的更多信息?
我想通过 C 或 shell 脚本来处理这个问题。
我有一个闪存驱动器,让我们命名它 FLASH。
我想,当在我的 mac 上时,当FLASH插入(并自动安装)时,执行特定的脚本并使其~/Documents自动复制到/Volumes/FLASH/Documents(mac 将驱动器安装在/Volumes)。
同一个驱动器,,FLASH(Documents之前用mac情况添加了这个新文件夹),当插入Ubuntu机器时,我希望它自动复制FLASH/Documents到~/Documents(或在安装后自动执行脚本)。
在这些不同的场景中,我应该如何做到这一点?我不想为此使用第三方应用程序,我更喜欢使用两个平台中都可用的核心/内置工具。