Files

是否可以找出創建給定文件的程序或腳本?

  • August 6, 2021

我的主目錄中突然出現了三個文件,分別稱為“client_state.xml”、“lockfile”和“time_stats_log”。最後兩個是空的。我想知道他們是如何到達那裡的。這不是第一次發生,但最後一次是幾週前;我刪除了文件,沒有任何損壞或抱怨。我一直無法想到我在報告的時間裡在做什麼stat $filename。有什麼辦法可以查出它們來自哪裡?

或者,有沒有辦法監視主目錄(但不是子目錄)以創建文件?

我不相信有辦法確定哪個程序創建了文件。

對於您的替代問題:您可以使用inotify. inotifywaitinotify子系統的命令行界面;您可以告訴它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

如果你對一個目錄(使用-wor -F dir=)進行監視,那麼它及其子目錄中的文件也會被遞歸地監視。

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