Linux插拔磁盘只有第一次会被感应到

问题:目前我在做一个类似hotplug的功能,也就是硬盘插入然后触发一些代码,具体的操作流程是通过udev检测硬盘的插入,然后执行一个python文件,但是现在测试的时候发现同一块盘,只有在拔或插第一次时才表现出正常的现象,比如拔了sda对应的硬盘,lsblk, lsscsi, udev, megacli都可以正常的检测少了一块盘,插得时候udev相关脚本也可以被执行,插得时候发现新设备sdg,这都是正常现象,但是如果重复操作第二次,lsblk. lsscsi显示的内容不会变化,sdg还存在,udev不会触发,只有megacli显示少了一块盘,由于我是通过udev接收系统设备变化然后执行代码的,所以我必须要获取每一次的磁盘插事件,有没有老铁有相关经验的,下面我贴一些测试代码:

自己写的一个 udev rules检测磁盘插拔

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

test.py主要是记录每次硬盘拔出的设备名

import sys

disk = sys.argv[1]
with open('/root/remove.txt', 'a') as f:
    f.write(disk + "\n")

test2.py主要是记录每次硬盘插入的设备名

import sys

disk = sys.argv[1]
with open('/root/add.txt', 'a') as f:
    f.write(disk + "\n")
阅读 3.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题