我在這裏發現了一些類似的問題,但現在它們都不起作用。如何在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