如何在Linux下检测U盘插入?
我该怎么知道什么时候插入了一个闪存驱动器?我在用一个没有图形界面的Debian系统,想在我的Python脚本中收到新闪存驱动器插入的通知……我知道D-BUS可以传递这种信息,但我不想用D-BUS。有没有更简单的方法可以获取这些信息?难道这些信息不应该在/proc或/sys目录下吗?我该怎么“连接”到这个信息源呢?
再见 falstaff
6 个回答
4
如果你要针对嵌入式设备,可以用 mdev 来代替 udev。这样你就可以写一些简单的 mdev 规则,让它触发一个脚本。
当然,你的脚本并不是直接在监控,而是 mdev 在做这个工作,但你可以启动任何命令。用 udev 也能做到类似的事情,不过我觉得它看起来总是比较复杂。
9
所有主要的Linux发行版都包含了udev这个工具,它可以让你在硬件发生变化时编写自定义的脚本。
6
你可以通过一个叫做Netlink的套接字来读取内核中的事件,关注那些"ACTION"
为"add"
的事件(你也可以查看设备的分区是否被挂载或卸载,或者设备是否被移除)。这就是在用户空间中获取事件的最直接方式。据我所知,这就是udev
如何检测插入的可移动媒体的。
不过,可能通过使用D-Bus/HAL API和Python绑定会简单得多(这样就不用解析uevents数据了,等等)。我不太明白你为什么反对这样做。既然你在用Python,我猜资源问题并不是主要的障碍。