我的操作系統是linux。如何知道哪些進程訪問文件?
我有一個文件位於/ etc,
其完整路徑如/ etc/AAA。
任何工具或命令都可以告訴我文件在某個時間段內被哪些進程訪問。 例如 上午01時十分,過程寫在/ etc/AAA 上午03時50分,進程B讀取/ etc/AAA
我需要知道的所有進程ID誰訪問/ ET/AAA
謝謝。
我的操作系統是linux。如何知道哪些進程訪問文件?
我有一個文件位於/ etc,
其完整路徑如/ etc/AAA。
任何工具或命令都可以告訴我文件在某個時間段內被哪些進程訪問。 例如 上午01時十分,過程寫在/ etc/AAA 上午03時50分,進程B讀取/ etc/AAA
我需要知道的所有進程ID誰訪問/ ET/AAA
謝謝。
的Linux的審計系統,可以幫助你,並會提供詳細資料:
下面是一些documentation在Redhat的網站,但應適用於其他的Linux變種。大多數發行版都有審計系統,但可能是可選的安裝。
假設審計子系統已經在運行,你可以添加一個規則來觀看這樣寫上您的示例文件訪問:
auditctl -w /etc/AAA -p r -k mywatch
然後你就可以看到結果與comamnd:
ausearch -k mywatch
或觀察audit.log文件(在某些系統上的/ var/log/audit中)
stat給你提供了一些信息;
$ stat test.txt
File: `test.txt'
Size: 166 Blocks: 1 IO Block: 65536 regular file
Device: 6a81ccb1h/1786891441d Inode: 6755399442667785 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/ PC_01) Gid: ( 513/ None)
Access: 2014-07-16 16:03:18.208462800 +0200
Modify: 2014-07-16 16:03:18.209462900 +0200
Change: 2014-07-16 16:03:18.209462900 +0200
Birth: 2014-07-16 16:03:18.208462800 +0200
-1'stat'不會顯示哪個進程觸及了文件。 –
另請參閱http://stackoverflow.com/questions/11230905/how-to-get-linux-file-modification-history-including-whogroup – Kokkie
沒有工具可以做到這一點。要查看當前哪個進程打開了文件,可以使用fuser
和lsof
。
要獲取更改的歷史記錄,您需要運行一個監視文件系統進行更改的進程。您可以使用inotify service來構建它。
相關:
非常感謝,它也適用於Ubuntu。 – Tony