Debian

是否有打開的文件名監視器?

  • February 4, 2021

有沒有辦法列出系統上所有正在打開的文件?

要麼顯示所有目前打開的文件(帶有它們的完整路徑,可能是某個lsof選項),或者,在我的情況下更有趣的是,只列出正在打開的路徑名(以 的方式tail -f),我認為這lsof是不可能的去做。

該程序inotifywait旨在用於高性能文件監控,例如您正在尋找的內容。這是一個概念證明:

$ inotifywait -qrm -e open -e access --format "%e %f" tmp/
OPEN hello
OPEN,ISDIR
ACCESS,ISDIR
OPEN hello

輸出來自 running touch tmp/hello,然後是less tmp/h<TAB>(tab-completes to less tmp/hello),然後是 Enter 以使用 Less 打開文件。

在系統範圍內執行時,您可能希望排除諸如/proc和之類的地方/sys。您可能還想通過管道grep -vE '^(OPEN|ACCESS),ISDIR$排除目錄。最後,您還應該查看針對遞歸監控給出的警告:

警告:如果在監視大樹的根目錄時使用此選項,可能需要一段時間才能建立所有 inotify 監視,並且在此期間不會收到事件。此外,由於每個子目錄將建立一個 inotify 手錶,因此可能會達到每個使用者的最大 inotify 手錶數量。預設最大值為 8192;可以通過寫入 /proc/sys/fs/inotify/max_user_watches 來增加它。

引用自:https://unix.stackexchange.com/questions/632686