2015-07-20 122 views
2

我有一個後臺進程運行了很長時間,並使用文件在其中寫入日誌。它的尺寸增加得太大了。我剛剛刪除了該文件,並創建了一個具有相同名稱和相同權限和所有權的新文件,但新文件沒有得到任何條目。 舊文件被標記爲已刪除,並且正在被lsof命令可以清楚地看到的進程仍在使用。恢復已刪除的文件滯留在Linux shell進程中

Plz讓我知道,有什麼辦法可以恢復該文件和。

您的積極迴應將非常有幫助。

回答

4

如果文件仍然被某個進程打開,您可以使用/proc文件系統恢復它。

首先,檢查該進程中打開文件的文件描述符編號。如果該文件是在過程開始與PID X,使用如下命令lsof

lsof -p X 

這將顯示當前由X打開的文件列表。第4列顯示文件描述符,最後一列顯示文件所在的掛載點和文件系統的名稱(在文件描述符編號後忽略ur和其他標誌,它們只是指示是否打開文件以供讀取,書寫等)

如果文件描述符編號爲Y,則可以在/proc/X/fd/Y中訪問其內容。所以,像這樣的東西會恢復它:

cp /proc/X/fd/Y /tmp/recovered_file