追蹤守護進程嘗試尋找其設定檔的位置

追蹤守護進程嘗試尋找其設定檔的位置

我在 kubuntu 系統上安裝了一個守護進程,它嘗試在未知位置尋找特定的設定檔。已經用設定檔的符號連結填滿了檔案系統,但它仍然抱怨「找不到檔案」。

我是否可以編寫一些命令,該命令將記錄所有訪問硬碟上不存在的文件的嘗試,以便我可以找到它嘗試查找其文件的位置?

答案1

如果您知道進程的 PID,則可以對進程使用 strace:

strace -f -p 123 | tee testoutput.txt

(假設 pid 為 123)。其中“-f”代表“follow forks”(簡單說),“-p”表示“PID follow”。請參閱man strace了解更多詳情。簡而言之,strace 追蹤進程嘗試的所有操作,例如開啟檔案、讀取或寫入檔案。最好的方法是將輸出重定向到一個檔案進行分析——在我的範例中,這是透過將其管道傳輸到tee 來實現的,tee 會將輸出拆分為顯示在控制台上以及寫入指定的文件。

在輸出中,尋找類似的內容

read(51, 0x7f287a7b36f0, 4096)          = -1 EAGAIN (Resource temporarily unavailable)

(是的,這是一個錯誤的錯誤 - 但我現在唯一能找到的錯誤) - 所以 aread後面跟著括號中的內容,然後是一些空格,後面跟著一個“=”和一個負數(=錯誤)。我想您應該找到類似“ENOTFOUND”的內容來指示丟失的檔案(不知道確切的錯誤代碼)。

相關內容