我有一个udev
规则,当我将卡插入我的 USB 读卡器时,触发一个 shell 脚本从我的 CF 卡复制照片。这工作得很好一段时间。但最近升级后,它已停止工作。
问题(AFAICT)是将 CF 卡插入 USB 读卡器不再触发任何udev
事件,所以我的脚本永远不会运行。(即使是 in 中的条目/dev/disk/by-label/
也不会出现在 insert 上,并且dmesg
没有显示任何关于 insert 的信息。)
udev
如果我运行fdisk -l /dev/sdf
(或sdh
它似乎是 CF 卡将出现的任何设备),我可以导致事件触发。我已经udev
使用udevadm monitor
, 并通过运行验证了事件udevd --debug
。在我手动触发系统后,脚本从这里开始工作正常。
我正在运行 Debian 6.0 (Squeeze),我非常有信心是几个月前 Lenny 的升级改变了行为,但我不确定这是否是一些细微的变化udev
(也许我在听对于错误的事件?)或内核或 USB 堆栈中的某些更改?无论如何,有人对如何解决这个问题有建议吗?或者从 USB 存储模块中获取更多调试信息的建议?
这是我正在使用的 udev 规则:
KERNEL=="sd??", SUBSYSTEM=="block", RUN+="/usr/local/bin/hot-add"
Run Code Online (Sandbox Code Playgroud)
我添加了一个规则来仅在块设备上而不是在分区上触发(以防它可能出现),但是当我插入 CF 卡时它也不会触发:
KERNEL=="sd?", SUBSYSTEM=="block", RUN+="/usr/local/bin/hot-add-disk"
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我运行fdisk -l /dev/sdf
以触发对 CF 卡的识别,我会收到一个“已更改”事件 …
我有一个使用find
我想将(管道)提供给cp
. 我的问题是文件中有空格和撇号,导致cp
反复抱怨它“无法统计”。这个问题有优雅的解决方案吗?