2010-09-08 78 views
7

我有一個文件和很多進程(和進程線程)正在訪問它。如何監視哪些進程訪問Unix中的特定文件?

我想監視文件以獲取所有進程試圖訪問文件的列表。能夠記錄時間戳對於日誌記錄來說也是非常好的,儘管我沒有它。

  • 是否有任何類似的Unix工具?

  • 在沒有這樣的實用程序存在的情況下,如何把這個使用腳本(殼,Perl中)或程序(C,C++)I程序?

+2

有可能是這樣做的沒有通用Unix的方式。例如,Linux已經知道了(請參閱Carlos的答案),但inotify只存在於Linux中。其他各種Unix有不同的方法。 – JeremyP 2010-09-08 15:24:12

回答

6

我認爲您要查找的基本功能在UNIX命令fuser中。

這將告訴你什麼進程正在使用一個文件(或者如果你喜歡端口)。

+0

雖然無法做出基於時間的報告 - 但應該很容易就可以在此基礎上創建您需要的內容 – lucas1000001 2010-09-08 14:22:13

1

你可能想看看lsof

+1

當我運行'lsof'時,程序可能會打開並關閉它。在這種情況下,它不會被'lsof'註冊。我需要一種方法來持續監視文件,以便每當某個進程訪問該文件時,觸發器都會將訪問記錄到日誌文件中。 – Lazer 2010-09-08 14:25:35

9

在Linux下,inotify可能是你在找什麼。

+0

我秒這! inotify還允許您添加在特定時間運行的鉤子:文件被訪問,寫入,附加到等;我前一段時間用它來自動git提交在目錄中修改或刪除的目錄中修改的文件 – mfontani 2010-09-08 15:15:14

相關問題