2014-07-24 79 views
0

我的操作系統是linux。如何知道哪些進程訪問文件?

我有一個文件位於/ etc,
其完整路徑如/ etc/AAA。

任何工具或命令都可以告訴我文件在某個時間段內被哪些進程訪問。 例如 上午01時十分,過程寫在/ etc/AAA 上午03時50分,進程B讀取/ etc/AAA

我需要知道的所有進程ID誰訪問/ ET/AAA

謝謝。

回答

1

的Linux的審計系統,可以幫助你,並會提供詳細資料:

下面是一些documentation在Redhat的網站,但應適用於其他的Linux變種。大多數發行版都有審計系統,但可能是可選的安裝。

假設審計子系統已經在運行,你可以添加一個規則來觀看這樣寫上您的示例文件訪問:

auditctl -w /etc/AAA -p r -k mywatch 

然後你就可以看到結果與comamnd:

ausearch -k mywatch 

或觀察audit.log文件(在某些系統上的/ var/log/audit中)

+0

非常感謝,它也適用於Ubuntu。 – Tony

-1

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 
+0

-1'stat'不會顯示哪個進程觸及了文件。 –

+1

另請參閱http://stackoverflow.com/questions/11230905/how-to-get-linux-file-modification-history-including-whogroup – Kokkie

2

沒有工具可以做到這一點。要查看當前哪個進程打開了文件,可以使用fuserlsof

要獲取更改的歷史記錄,您需要運行一個監視文件系統進行更改的進程。您可以使用inotify service來構建它。

相關:

相關問題