这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。比如当前举例说明:
通过一个shell终端对一个测试文件做cat追加 *** 作:
[root@21yunwei_backup ~]# echo "hello py" >testdelete.py
[root@21yunwei_backup ~]# cat >>testdelete.py
hello delete
另外一个终端查看这个文件可以清楚看到内容:
[root@21yunwei_backup ~]# cat testdelete.py
hello py
hello delete
此时,在当前服务器删除 *** 作文件rm -f ./testdelete.py
命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。
1,lsof查看删除的文件进程是否还存在。这里用到一个命令lsof,如没有安装请自行yum或者apt-get。类似这种情况,我们可以先lsof查看删除的文件 是否还在:
[root@21yunwei_backup ~]# lsof | grep deleted
mysqld 1512 mysql 5u REG 252,3 0 6312397 /tmp/ibzW3Lot (deleted)
cat 20464 root 1w REG 252,3 23 1310722 /root/testdelete.py (deleted)
幸运的是这种情况进程还存在 ,那么开始进行恢复 *** 作。
2,恢复。
恢复命令:
cp /proc/pid/fd/1 /指定目录/文件名
进入 进程目录,一般是进入/proc/pid/fd/,针对当前情况:
[root@21yunwei_backup ~]# cd /proc/20464/fd
[root@21yunwei_backup fd]# ll
total 0
lrwx------ 1 root root 64 Nov 15 18:12 0 >/dev/pts/1
l-wx------ 1 root root 64 Nov 15 18:12 1 >/root/testdelete.py (deleted)
lrwx------ 1 root root 64 Nov 15 18:12 2 >/dev/pts/1
恢复 *** 作:
cp 1 /tmp/testdelete.py
查看文件:
[root@21yunwei_backup fd]# cat /tmp/testdelete.py
hello py
hello delete
恢复完成。
您好,如果脚本运行后把脚本删了,那么可能会出现一些问题。首先,脚本删除后,可能会导致程序无法正常运行,因为脚本是程序的一部分,它包含了程序的指令和语句,如果脚本被删除,程序就无法正常运行。其次,脚本删除后,可能会导致数据丢失,因为脚本中可能包含了一些数据,如果脚本被删除,这些数据也会被删除,从而导致数据丢失。此外,脚本删除后,可能会导致程序安全性降低,因为脚本中可能包含了一些安全控制,如果脚本被删除,这些安全控制也会被删除,从而导致程序安全性降低。因此,建议您在删除脚本之前,先考虑清楚,以免造成不必要的麻烦。1、查看进程“打开”的文件 (方法1): 1)pidof programe-name(获得想了解的进程(programe-name)的PID) 或ps -aux|grep programe-name(获得想了解的进程(programe-name)的PID) 找出进程的PID 2)cd /proc/$PID/fd(会看见文件描述符) 3)ls -l 得到文件描述符指向的实际文件,即当前进程打开的文件2、查看进程“打开”的文件 (方法2): 1)获得想了解的进程的PID方法同上 2)lsof -c programe-name 或lsof -p $PID欢迎分享,转载请注明来源:内存溢出
评论列表(0条)