第一次后磁盘插入缓存

disk plug cache after first time

我需要开发一项类似于磁盘热插拔的功能。我写了一些 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")

拔出前尝试卸载