如何在Linux下检测何时插入闪存驱动器?

时间:2009-10-05 07:40:28

标签: python linux

如何检测插入闪存驱动器的时间?我正在使用裸Debian安装,没有任何GUI,并希望在出现新的闪存驱动器时在我的Python脚本中得到通知...我知道D-BUS分发这些信息,但我不想使用D-BUS。是否有更多的信息访问?不应该在/ proc或/ sys下可用吗?我如何“连接”到该来源?

再见 福斯塔夫

6 个答案:

答案 0 :(得分:9)

所有市长Linux发行版都包含udev,允许您在硬件事件上编写自定义脚本。

答案 1 :(得分:6)

您可以通过uevents from kernel套接字阅读Netlink并查找"ACTION""add"的事件(您还可以查看设备中的分区是否已安装或已卸载,或者如果正在移除设备)。这与用户空间中的事件来源非常接近。据我所知,这是udev检测插入的可移动媒体的方式。

但是using D-Bus/HAL API via Python bingings可能会更容易(没有uevents数据解析等)。不确定为什么你反对这个。由于您使用的是Python,我怀疑资源并不是真正的问题。

答案 2 :(得分:4)

如果您要定位嵌入式设备,则可以运行mdev而不是udev。 然后,您可以编写非常简单的mdev规则并触发脚本。

当然你没有直接从你的脚本监控,mdev正在这样做,但你可以启动任何命令。你可以用udev做同样的事情,但对我来说看起来总是很复杂。

答案 3 :(得分:1)

当插入USB设备时,syslog会将有关此消息的消息写入/ var / log / messages。 “dmesg”命令显示此日志。您可以在日志末尾附近查看设备所连接的通道,通常是/ dev / sd(字母)(数字),具体取决于插入系统的分区和串行磁盘的数量。

答案 4 :(得分:0)

/ proc / partitions显示内核已知的所有分区。

答案 5 :(得分:0)

我在脚本中使用zenity执行此操作,使用rhel6中的规则执行udev:

KERNEL ==“sd [b-d]”,DRIVERS ==“usb”,ACTION ==“add”,RUN + =“/ path / to / script”