我需要一些腳本來記錄(僅輸出到控制台或文件)對某個磁碟或目錄的每次存取(對我有用)。我還想知道到底訪問了什麼(哪個子目錄或檔案)。我的系統是ubuntu linux。這可能嗎?
答案1
看看inotify,這正是它的建置目的。 IBM 在以下位置有一個還不錯的介紹(儘管有點過時)http://www.ibm.com/developerworks/linux/library/l-inotify.html
答案2
如果您想要使用簡單的過濾器腳本來監視單一程式 strace 的操作,那麼更一般地看看 SElinux 的「auditd」。
http://en.wikipedia.org/wiki/Strace http://linux.die.net/man/8/auditd
在 Windows 方面,請查看 SysInternals 人員的 filemon。
http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx
答案3
您可以使用因克朗,這是一個類似 cron 的工具,用於處理 inotify 的檔案系統事件。
您可以定義每次 IN_ACCESS 事件發生時執行的動作。
配置就像 cron 一樣簡單:
<path> <mask> <command>
在哪裡:
<path>
是檔案系統路徑(每個空格必須以反斜線開頭)<mask>
是事件的符號(請參閱 inotify.h;使用逗號分隔符號)或數字掩碼<command>
是針對事件運行的應用程式或腳本
答案4
如果您確實想要看到這麼大的輸出,那麼您可以使用auditd。但如果您想將其列印到文件中,則可能會導致無限循環,因為對文件的任何存取都意味著將其列印到日誌文件中。列印到日誌檔案也是對檔案的訪問,因此它也應該列印到日誌檔案。所以要小心。
即使沒有無限循環,列印的資料量也應該很大。如果您將問題更改為您希望透過此監視實現什麼目的,人們可能會建議一種比記錄對所有文件的存取權更好的方法。