在日常生产中,有时候会误删除某个文件,如果误删的是数据库的话,数据库虽然删除了,实际上数据库里的文件仍然是被数据库的程序所占用的,在Linux里有个特点就是正在占用的文件是可以删除的,某个文件正在被占用时删除之后磁盘空间是不会立即释放的,那么我们就可以利用这个特点去恢复被删除的文件
第一步,先把这个文件找到,执行命令lsof | grep delete ,就会列出系统里所有被打开的文件,其中就包括那个被删掉的文件,可以看到,你虽然删掉了这个文件,但是没有被真正的删掉,因为系统正在占用它
第二步,查看被删除文件的PID,执行命令ls /proc /PID /fd (fd显示文件描述符) ,就会看到其中的一个文件描述符指向的就是那个被误删的文件
第三步,执行命令cat/proc/PID/fd/#(描述符编号)> file,文件就恢复了
注意!恢复被删除文件的前提是这个进程还没退出,文件正在被系统占用,如果是没有被占用的情况下就没办法恢复了。