我在这里发现了一些类似的问题,但现在它们都不起作用。如何在Linux上可靠地监控驱动器mount/umount?
/etc/mtab
的监视(inotify)不起作用,因为它现在与/proc/mounts
交叉。通过udisks
进行监视不会捕获手动安装/卸下的驱动器。 Netlink套接字也不起作用(没有mount/umount动作)。
那么监测坐骑和坐骑的真正工作方式是什么?
P.S. 我不在乎命名空间坐骑,只是全球。
我在这里发现了一些类似的问题,但现在它们都不起作用。如何在Linux上可靠地监控驱动器mount/umount?
/etc/mtab
的监视(inotify)不起作用,因为它现在与/proc/mounts
交叉。通过udisks
进行监视不会捕获手动安装/卸下的驱动器。 Netlink套接字也不起作用(没有mount/umount动作)。
那么监测坐骑和坐骑的真正工作方式是什么?
P.S. 我不在乎命名空间坐骑,只是全球。
您可以在不进行轮询的情况下监视/ proc/mounts。把它放在exceptfds列表中进行选择,然后每次寻找文件的开头。这里有一个python的快速演示,但它应该很容易转换为C:
f = open("/proc/mounts")
while True:
r,w,x = select.select([],[],[f])
f.seek(0)
print f.read()
'/ etc/mtab'由于您可以mount -n',因此无论如何都是不可靠的。我想说的唯一方法是在mount syscalls上使用内核级别的跟踪......不知道你怎么做到这一点。 – fge 2012-01-08 13:52:38
你能监视/ proc/mounts吗? – Dave 2012-01-08 14:20:55
@Dave的问题是,在最近的Linux发行版中,/ proc/mounts是自我/挂载的符号链接... – fge 2012-01-08 15:00:56