lsof | grep deleted
-
[jyapp@vm09-ap04 ~]$ lsof |grep delete
-
java 10772 jyapp 7w REG 252,3 24331065136 3279571 /home/jyapp/apache-tomcat-7.0.59/logs/catalina.2017-12-01.log (deleted)
-
java 14653 jyapp 1u CHR 136,2 0t0 5 /dev/pts/2 (deleted)
-
java 14653 jyapp 2u CHR 136,2 0t0 5 /dev/pts/2 (deleted)
-
java 23101 jyapp 5r REG 252,3 391957 2238186 /tmp/jar_cache6756016439409937863.tmp (deleted)
-
java 23101 jyapp 26r REG 252,3 915475 2238185 /tmp/jar_cache5029505278991329686.tmp (deleted)
-
java 23101 jyapp 29r REG 252,3 96566 2238187 /tmp/jar_cache1107947624270422886.tmp (deleted)
-
java 23101 jyapp 30r REG 252,3 54599 2238188 /tmp/jar_cache4072039355757578211.tmp (deleted)
-
java 23101 jyapp 31r REG 252,3 142483 2238189 /tmp/jar_cache5400797551304312323.tmp (deleted)
-
java 23101 jyapp 32r REG 252,3 414240 2238190 /tmp/jar_cache1400965857422055726.tmp (deleted)
可以找到pid 10772 和7w,然后去/proc/10772/fd/7这个就是文件句柄,可以恢复,可以干掉程序。
solaris上面的操作,从网上找的,未尝试:
-
# lsof -a -p 8663 -d ^txt
-
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
-
httpd 8663 nobody cwd VDIR 136,8 1024 2 /
-
httpd 8663 nobody 0r VCHR 13,2 6815752 /devices/pseudo/mm@0:null
-
httpd 8663 nobody 1w VCHR 13,2 6815752 /devices/pseudo/mm@0:null
-
httpd 8663 nobody 2w VREG 136,8 185 145465 / (/dev/dsk/c0t0d0s0)
-
httpd 8663 nobody 4r DOOR 0t0 58 /var/run/name_service_door
-
(door to nscd[81]) (FA:->0x30002b156c0)
-
httpd 8663 nobody 15w VREG 136,8 185 145465 / (/dev/dsk/c0t0d0s0)
-
httpd 8663 nobody 16u IPv4 0x300046d27c0 0t0 TCP *:80 (LISTEN)
-
httpd 8663 nobody 17w VREG 136,8 0 145466
-
/var/apache/logs/access_log
-
httpd 8663 nobody 18w VREG 281,3 0 9518013 /var/run (swap)
-
-
我使用-a和-d参数对输出进行筛选,以排除代码程序段,因为我知道需要查找的是哪些文件。Name列显示出,其中的两个文件(FD 2 和 15)使用磁盘名代替了文件名,并且它们的类型为VREG(常规文件)。在 Solaris 中,删除的文件将显示文件所在的磁盘的名称。通过这个线索,就可以知道该 FD 指向一个删除的文件。实际上,查看/proc/8663/fd/15就可以得到所要查找的数据。
-
-
如果可以通过文件描述符查看相应的数据,那么您就可以使用 I/O 重定向将其复制到文件中,如cat /proc/8663/fd/15 > /tmp/error_log。此时,您可以中止该守护进程(这将删除 FD,从而删除相应的文件),将这个临时文件复制到所需的位置,然后重新启动该守护进程。
-
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。正如您所看到的,有些操作系统(以及不同版本的lsof)比其他的系统更容易查找相应的数据。
阅读(692) | 评论(0) | 转发(0) |