我需要开发一个类似于磁盘热插拔的功能。我编写了一些udev规则来监视磁盘,以便在udev触发时执行一个python脚本。
问题:
当我第一次拉磁盘时,lsblk, lsscsi, udev, megacli都可以监视,/dev/sda更改为/dev/sdgudev也可以被触发,py脚本执行成功,第一次磁盘插入也正常。
但是第二次或者更多的时候,我拉以前的/dev/sdglsblk, lsscsi, udev都感觉不到,std输出列表也包含dev/sdg,而且udev没有找到remove event,脚本也没有执行,megacli可以找到磁盘的不足。
现在我需要udev实时监控磁盘插件来执行脚本,有人在这个问题上有经验吗?
我的udev规则:

KERNEL=="sd[a-z]", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/disk_plug.py %k add"
KERNEL=="sd[a-z]", ACTION=="remove", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/disk_plug.py %k remove"

这是我的测试脚本:/root/disk_plug.py
import sys
import time
disk = sys.argv[1]
event = sys.argv[2]
with open('/root/disk.txt', 'a') as f:
    msg = event + '-' + disk + '-' + str(time.time())
    f.write(msg + "\n")

最佳答案

拔出前试着倒数

关于python - 第一次后的磁盘插件缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45993368/

10-15 03:38