2012-01-08 49 views
4

我在这里发现了一些类似的问题,但现在它们都不起作用。如何在Linux上可靠地监控驱动器mount/umount?

/etc/mtab的监视(inotify)不起作用,因为它现在与/proc/mounts交叉。通过udisks进行监视不会捕获手动安装/卸下的驱动器。 Netlink套接字也不起作用(没有mount/umount动作)。

那么监测坐骑和坐骑的真正工作方式是什么?

P.S. 我不在乎命名空间坐骑,只是全球。

+0

'/ etc/mtab'由于您可以mount -n',因此无论如何都是不可靠的。我想说的唯一方法是在mount syscalls上使用内核级别的跟踪......不知道你怎么做到这一点。 – fge 2012-01-08 13:52:38

+0

你能监视/ proc/mounts吗? – Dave 2012-01-08 14:20:55

+0

@Dave的问题是,在最近的Linux发行版中,/ proc/mounts是自我/挂载的符号链接... – fge 2012-01-08 15:00:56

回答

3

我认为udev应该可以用来监视坐骑。

+0

这是,当然。 – 2012-01-08 18:58:29

2

您可以在不进行轮询的情况下监视/ proc/mounts。把它放在exceptfds列表中进行选择,然后每次寻找文件的开头。这里有一个python的快速演示,但它应该很容易转换为C:

f = open("/proc/mounts") 
while True: 
    r,w,x = select.select([],[],[f]) 
    f.seek(0) 
    print f.read() 
相关问题