Debian
是否有打開的文件名監視器?
有沒有辦法列出系統上所有正在打開的文件?
要麼顯示所有目前打開的文件(帶有它們的完整路徑,可能是某個
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 toless tmp/hello
),然後是 Enter 以使用 Less 打開文件。在系統範圍內執行時,您可能希望排除諸如
/proc
和之類的地方/sys
。您可能還想通過管道grep -vE '^(OPEN|ACCESS),ISDIR$
排除目錄。最後,您還應該查看針對遞歸監控給出的警告:警告:如果在監視大樹的根目錄時使用此選項,可能需要一段時間才能建立所有 inotify 監視,並且在此期間不會收到事件。此外,由於每個子目錄將建立一個 inotify 手錶,因此可能會達到每個使用者的最大 inotify 手錶數量。預設最大值為 8192;可以通過寫入 /proc/sys/fs/inotify/max_user_watches 來增加它。