使用lsof恢復進程打開的誤刪除文件

在Linux系統中一切皆可以看成是文件,文件又可分爲:普通文件、目錄文件、鏈接文件和設備文件。文件描述符(file descriptor)是內核爲了高效管理已被打開的文件所創建的索引,其是一個非負整數(通常是小整數),用於指代被打開的文件,所有執行I/O操作的系統調用都通過文件描述符。程序剛剛啓動的時候,0是標準輸入,1是標準輸出,2是標準錯誤。如果此時去打開一個新的文件,它的文件描述符會是3。當完成任務後,再通過調用系統函數來關閉該文件。
任務1 lsof查看打開/var/log/messages文件的進程
[root@f ~]# lsof -l /var/log/messages

在這裏插入圖片描述
任務2 使用cp備份後用rm模擬誤刪除

[root@f ~]# cp /var/log/messages /var/log/messages.bak
[root@f ~]# rm /var/log/messages
rm: remove regular file ‘/var/log/messages’? y
[root@f ~]# cp /var/log/messages.bak /var/log/messages
[root@f ~]# ls -lh /var/log/messages
在這裏插入圖片描述
在這裏插入圖片描述
任務3 lsof再次查看message文件的狀態
此處重啓,再查看
[root@f ~]# lsof -l /var/log/messages

在這裏插入圖片描述

任務4 查看相應進程的文件描述符FD
由lsof可以知道messages的進程的893,FD爲3W
使用ls 即可知道messages所連接的文件進程
[root@f ~]# ls -lh /proc/893/fd/
[root@f ~]# cat /proc/893/fd/3
在這裏插入圖片描述
在這裏插入圖片描述

任務5 通過文件描述符查看文件的內容並恢復
重啓之後查看messages的進程號,刪除並恢復

[root@f ~]# lsof -l /var/log/messages
[root@f ~]# rm -rf /var/log/messages
[root@f ~]# cat /proc/893/fd/3 > /var/log/messages
[root@f ~]# head /var/log/messages

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章