1. 程式人生 > >在Linux 中如何從程序相關的檔案描述中恢復資料

在Linux 中如何從程序相關的檔案描述中恢復資料

Linux中誤刪除了某個檔案,但是 ps-ef|grep 檔名 發現某個程序還在使用該檔案,那麼可以通

過以下方式恢復檔案。

例如:建立一個簡單檔案/tmp/test.txt, 隨便向裡面寫點內容

兩個client模擬,client1 負責開啟檔案less /tmp/test.txt(模擬佔用執行緒)

client2 負責恢復檔案,恢復步驟(均在client2上執行)

1. 檢視/tp/test.txt被佔用的程序id

[[email protected] tmp]# ps -ef|grep test.txt
root     31631 31539  0 09:35 pts/0    00:00:00 less test.txt
root     31649 31579  0 09:36 pts/1    00:00:00 grep test.txt

2. cd /proc/31631/fd 資料夾中

3. 執行ll命令
[[email protected] fd]# ll
total 0
lrwx------ 1 root root 64 Dec  3 09:36 0 -> /dev/pts/0
lrwx------ 1 root root 64 Dec  3 09:36 1 -> /dev/pts/0
lrwx------ 1 root root 64 Dec  3 09:36 2 -> /dev/pts/0
lr-x------ 1 root root 64 Dec  3 09:36 3 -> /dev/tty
lr-x------ 1 root root 64 Dec  3 09:36 4 -> /tmp/test.txt (deleted)

4. 發現了4是軟連線到 /tmp/test.txt 檔案中的

cat 4 即可找到刪除的檔案內容

以下是/proc目錄中程序N的資訊

/proc/N/cmdline 程序啟動命令
/proc/N/cwd 連結到程序當前工作目錄
/proc/N/environ 程序環境變數列表
/proc/N/exe 連結到程序的執行命令檔案
/proc/N/fd 包含程序相關的所有的檔案描述符
/proc/N/maps 與程序相關的記憶體對映資訊
/proc/N/mem 指代程序持有的記憶體,不可讀
/proc/N/root 連結到程序的根目錄
/proc/N/stat 程序的狀態
/proc/N/statm 程序使用的記憶體的狀態
/proc/N/status 程序狀態資訊,比stat/statm更具可讀性
/proc/self 連結到當前正在執行的程序