
我想知道進程訪問哪些文件。strace
可以為我提供該信息,但輸出strace
相當“原始”。是否有任何東西可以提供類似的功能,但以更易於理解的方式(即過濾出庫、突出顯示 $HOME 目錄中的文件、提供有關內容訪問頻率的統計信息等)?
答案1
一個叫 Ole Tange 的人編寫了您所描述的工具。看看這裡https://gitlab.com/ole.tange/tangetools/tree/master/tracefile。追蹤檔案本質上是一個 shell 腳本,因此使其可執行並運行它。 .pod 檔案是描述如何使用它的手冊。
答案2
法特拉斯
安裝法特拉斯包裹:
sudo apt install fatrace
姓名 fatrace - 報告系統範圍的檔案存取事件
概要 脂肪追蹤 [ 選項 ]
描述 fatrace 會報告所有正在執行的程序的檔案存取事件。
它不會報告 fatrace 本身的文件存取情況,以避免記錄因將輸出寫入文件而導致的事件。它也忽略虛擬和核心檔案系統(例如 sysfs、proc 和 devtmpfs)上的事件。
其主要目的是找到不必要地不斷喚醒磁碟的進程,從而阻止某些節能。
預設情況下,事件將報告到標準輸出。如果您在 gnome-terminal 等中執行此工具,這將導致一些循環,因為這會導致每個輸出行都進行磁碟存取。為了避免這種情況,請將輸出重定向到檔案中。
輸出格式
典型的事件如下所示rsyslogd(875): W /var/log/auth.log compiz(1971): O device 8:2 inode 658203
該行具有以下欄位:
進程名稱。這是從 /proc/pid/comm 讀取的,並且可能會縮寫長進程名稱。
行程編號
事件類型:開啟、讀取、寫入或關閉。組合是可能的,例如 CW 用於關閉寫入的檔案。
受影響的文件。在某些情況下,無法確定路徑和名稱,例如因為它是已刪除的臨時檔案。在這種情況下,它會列印設備的主設備號和次設備號以及索引節點號。要更詳細地檢查這樣的過程,您應該考慮使用 strace(1)。
如果指定 --timestamp 選項,第一個欄位將是目前時間。