(ps:即该文件在启动时会被进程调用,或者有进程调用该文件。例如:某服务在执行时都会写日志文件,而日志文件就会被一些进程调用用于记录日志。)
现在我们模拟文件(占用进程)被误删的状态:
[[email protected] ~]# echo 123123 > a.txt [[email protected] ~]# cat a.txt 123123 [[email protected] ~]# tail -f a.txt 123123
(使用tail -f 一直监控该文件,这样当前文件就会有一个进程。)
另起一个窗口,删除该文件
[[email protected]~]# rm -f a.txt [[email protected] ~]# ls|grep a.txt
现在已经确认该文件被删除。
然后我们找回该文件
[[email protected] ~]# ps -ef|grep tail root 1674 1174 0 03:29 pts/1 00:00:00 tail -fa.txt root 1719 1633 0 03:38 pts/2 00:00:00 grep--color=auto tail [[email protected] ~]# lsof|grep delete bash 1174 root 6w REG 8,3 9 34549 /root/a.txt (deleted) tail 1674 root 6w REG 8,3 9 34549 /root/a.txt (deleted) tail 1674 root 7r REG 8,3 7 4066 /root/a.txt (deleted) [[email protected] ~]# cat /proc/1674/fd/7 123123
这样,我们就找到了删除的文件内容,然后只要复制粘贴到文件中,就ok了。
查找位置就是/proc/内tail的进程号1674的目录里的fd(文件描述符文件夹)里的7(文件描述符号),即/proc/1674/fd/7文件就是该进程调用刚才创建文件的内容,这样就找回了刚才误删的文件内容。
时间: 2024-10-14 12:11:11