Files
是否可以找出創建給定文件的程序或腳本?
我的主目錄中突然出現了三個文件,分別稱為“client_state.xml”、“lockfile”和“time_stats_log”。最後兩個是空的。我想知道他們是如何到達那裡的。這不是第一次發生,但最後一次是幾週前;我刪除了文件,沒有任何損壞或抱怨。我一直無法想到我在報告的時間裡在做什麼
stat $filename
。有什麼辦法可以查出它們來自哪裡?或者,有沒有辦法監視主目錄(但不是子目錄)以創建文件?
我不相信有辦法確定哪個程序創建了文件。
對於您的替代問題:您可以使用
inotify
.inotifywait
是inotify
子系統的命令行界面;您可以告訴它create
在您的主目錄中查找事件:$ (sleep 5; touch ~/making-a-test-file) & [1] 22526 $ inotifywait -e create ~/ Setting up watches. Watches established. /home/mmrozek/ CREATE making-a-test-file
你可能想用
-m
(monitor) 執行它,它告訴它在看到第一個事件後不要退出
您可以通過LoggedFS訪問文件系統來觀察文件系統上發生的一切。這是一個堆疊文件系統,將每次訪問都記錄在目錄樹中。
loggedfs -l /var/tmp/$USER-home-fs.log ~
但是,記錄整個主目錄可能會減慢系統速度。您至少需要編寫一個具有嚴格過濾器的配置文件。
如果您有 root 訪問權限,在 Linux 上,您可以使用審計子系統記錄大量內容,包括文件系統訪問。確保
auditd
守護程序已啟動,然後配置您要使用的日誌記錄auditctl
。每個記錄的操作都記錄在/var/log/audit/audit.log
(在典型分佈上)。要開始觀看特定文件:auditctl -w /path/to/file
或長形式
auditctl -a exit,always -F path=/path/to/file
如果你對一個目錄(使用
-w
or-F dir=
)進行監視,那麼它及其子目錄中的文件也會被遞歸地監視。