工作中有可能会遇到误删除正在打开的文件,可以用lsof来恢复下
准备测试文件
1.第一个终端:echo 123456 > /data/test.txt
2.打开第二个终端:模拟正在打开的情况 less /data/test.txt
3.此时在第一个终端 执行rm -rf /data/test.txt
4.删除之后 lsof |grep deleted 如下图,可以看到pid为68545
5.我们进入到 /proc/68545/fd下面,如下图 显示4 deleted
6.我们来恢复4
cat /proc/68545/fd/4 > /data/test.txt 即可恢复成功
如果在你还没有恢复之前,另一个终端退出,也就是在没有打开的状态,那么就不能恢复成功,会提示:ls: cannot access /proc/68545/fd/: No such file or directory