2012-01-08 82 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() 
相關問題