我正在编写一个 bash 脚本,需要检测何时插入 USB 存储设备并将其分配给一个变量,否则,该变量通常看起来像:usb=/dev/sdb
。
我有一些抽象的想法,涉及使用watch
、某种if
/while
循环结构以及可能的lsblk -o kname
/ lsblk -o pkname
;但尚未完全实现任何合适的东西。
我怎样才能最好地实现这一点?
答案1
你可以使用 来启动一个脚本UDEV
。“udev 还处理在系统中添加或删除硬件设备时引发的所有用户空间事件”(来自http://wiki.archlinux.org/index.php/Udev)
在名为:的文件中,/etc/udev/rules.d/10-usb.rules
添加以下内容:
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/path/to/script.sh"
注意:您可能需要根据您的发行版稍微调整文件的位置。另请注意:您可能需要重新启动才能使规则生效。