我有一个在VMware ESXi 6基础架构上运行的RedHat 7 VM。我需要检测软盘插入事件,然后根据该插入事件启动脚本。
我最初的方法是尝试并使用Udev规则在软盘插入时触发脚本执行,但是该事件似乎从未开始过。
/etc/udev/rules.d/99-my.rules
SUBSYSTEM=="block", KERNEL=="fd0", ACTION=="change", RUN+="sh -c /my-custom-script"
如果那行不通,我尝试解决此问题,而不是在插入操作上执行,而是写了一个cron作业,尝试每两分钟挂载一次软盘,并测试是否在挂载点中包含某些文件。但是,当没有插入软盘时,这会导致一些令人讨厌的输出:
end_request: I/O error, dev fd0, sector0
因此,我发现自己试图弄清为什么Udev规则不起作用。我使用Udev规则的方法是否错误,还是有其他方法可以实现?
据我了解udev,它没有提供任何监视软盘驱动器的方法。软盘驱动器不提供任何检测插入的方法,即,检测磁盘的插入需要对驱动器进行连续轮询。
该diskd
实用程序可以满足您的需求。它连续轮询驱动器,并在插入时退出或执行命令。它是fdutils的一部分,可以从Debian下的存储库中安装它。在RHEL / Fedora下,您必须编译源代码。
用法:
diskd [-d drive] [-i interval] [-e command]
以下内容应监视驱动器中的磁盘,并在插入时将其安装,然后退出。我没有尝试过,因为我只有一个IDE软盘驱动器(LS-120 SuperDisk)。
diskd -d /dev/fd0 -e "udisks --mount /dev/fd0 --mount-fstype=vfat"
应该注意的是,您需要成为该floppy
组的成员才能以非root用户身份运行该组,因为它需要直接访问软盘设备(例如/dev/fd0
)。它使用FDPOLLDRVSTAT
ioctl(请参阅参考资料man 4 fd
)轮询设备。
另外,手册页/文档具有以下警告:
该程序的工作方式是在很短的间隔内打开电动机,然后寻找-1。从长远来看,这可能会损坏硬件。也使用这些技术的Amigas,以其磁盘驱动器在使用数月后不再正常旋转而出现问题而闻名。
我不确定这是否真的是一个严重的问题,但是如果您要在生产环境中使用此驱动器,那么准备好备用驱动器可能会很有用。它们不再那么贵了,对吗?
(该fdmountd
实用程序听起来很古老,对于它是否适用于“较新”内核上的普通FAT12格式的磁盘,我持怀疑态度。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句