我有一個文件和很多進程(和進程線程)正在訪問它。如何監視哪些進程訪問Unix中的特定文件?
我想監視文件以獲取所有進程試圖訪問文件的列表。能夠記錄時間戳對於日誌記錄來說也是非常好的,儘管我沒有它。
是否有任何類似的Unix工具?
在沒有這樣的實用程序存在的情況下,如何把這個使用腳本(殼,Perl中)或程序(C,C++)I程序?
我有一個文件和很多進程(和進程線程)正在訪問它。如何監視哪些進程訪問Unix中的特定文件?
我想監視文件以獲取所有進程試圖訪問文件的列表。能夠記錄時間戳對於日誌記錄來說也是非常好的,儘管我沒有它。
是否有任何類似的Unix工具?
在沒有這樣的實用程序存在的情況下,如何把這個使用腳本(殼,Perl中)或程序(C,C++)I程序?
我認爲您要查找的基本功能在UNIX命令fuser
中。
這將告訴你什麼進程正在使用一個文件(或者如果你喜歡端口)。
雖然無法做出基於時間的報告 - 但應該很容易就可以在此基礎上創建您需要的內容 – lucas1000001 2010-09-08 14:22:13
FAM - 文件變更監視器http://oss.sgi.com/projects/fam/ 或 流浪兒http://people.gnome.org/~veillard/gamin/
可能會幫助你(野孩似乎維持,而我不能說爲FAM一樣)。
您可以將您的應用程序連接到FAM /流浪兒,然後,如果事情發生與觀看的文件會通知您。 有關詳細信息,我建議:http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=bks&fname=/SGI_Developer/books/IIDsktp_IG/sgi_html/ch08.html
有可能是這樣做的沒有通用Unix的方式。例如,Linux已經知道了(請參閱Carlos的答案),但inotify只存在於Linux中。其他各種Unix有不同的方法。 – JeremyP 2010-09-08 15:24:12