Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22903
  • 博文数量: 10
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-12 09:51
文章分类

全部博文(10)

文章存档

2017年(9)

2016年(1)

我的朋友

分类: LINUX

2017-12-01 13:56:40

lsof | grep deleted

  1. [jyapp@vm09-ap04 ~]$ lsof |grep delete
  2. java 10772 jyapp 7w REG 252,3 24331065136 3279571 /home/jyapp/apache-tomcat-7.0.59/logs/catalina.2017-12-01.log (deleted)
  3. java 14653 jyapp 1u CHR 136,2 0t0 5 /dev/pts/2 (deleted)
  4. java 14653 jyapp 2u CHR 136,2 0t0 5 /dev/pts/2 (deleted)
  5. java 23101 jyapp 5r REG 252,3 391957 2238186 /tmp/jar_cache6756016439409937863.tmp (deleted)
  6. java 23101 jyapp 26r REG 252,3 915475 2238185 /tmp/jar_cache5029505278991329686.tmp (deleted)
  7. java 23101 jyapp 29r REG 252,3 96566 2238187 /tmp/jar_cache1107947624270422886.tmp (deleted)
  8. java 23101 jyapp 30r REG 252,3 54599 2238188 /tmp/jar_cache4072039355757578211.tmp (deleted)
  9. java 23101 jyapp 31r REG 252,3 142483 2238189 /tmp/jar_cache5400797551304312323.tmp (deleted)
  10. java 23101 jyapp 32r REG 252,3 414240 2238190 /tmp/jar_cache1400965857422055726.tmp (deleted)

可以找到pid 10772 和7w,然后去/proc/10772/fd/7这个就是文件句柄,可以恢复,可以干掉程序。

solaris上面的操作,从网上找的,未尝试:

  1. # lsof -a -p 8663 -d ^txt
  2. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  3. httpd 8663 nobody cwd VDIR 136,8 1024 2 /
  4. httpd 8663 nobody 0r VCHR 13,2 6815752 /devices/pseudo/mm@0:null
  5. httpd 8663 nobody 1w VCHR 13,2 6815752 /devices/pseudo/mm@0:null
  6. httpd 8663 nobody 2w VREG 136,8 185 145465 / (/dev/dsk/c0t0d0s0)
  7. httpd 8663 nobody 4r DOOR 0t0 58 /var/run/name_service_door
  8. (door to nscd[81]) (FA:->0x30002b156c0)
  9. httpd 8663 nobody 15w VREG 136,8 185 145465 / (/dev/dsk/c0t0d0s0)
  10. httpd 8663 nobody 16u IPv4 0x300046d27c0 0t0 TCP *:80 (LISTEN)
  11. httpd 8663 nobody 17w VREG 136,8 0 145466
  12. /var/apache/logs/access_log
  13. httpd 8663 nobody 18w VREG 281,3 0 9518013 /var/run (swap)

  14. 我使用-a和-d参数对输出进行筛选,以排除代码程序段,因为我知道需要查找的是哪些文件。Name列显示出,其中的两个文件(FD 2 和 15)使用磁盘名代替了文件名,并且它们的类型为VREG(常规文件)。在 Solaris 中,删除的文件将显示文件所在的磁盘的名称。通过这个线索,就可以知道该 FD 指向一个删除的文件。实际上,查看/proc/8663/fd/15就可以得到所要查找的数据。

  15. 如果可以通过文件描述符查看相应的数据,那么您就可以使用 I/O 重定向将其复制到文件中,如cat /proc/8663/fd/15 > /tmp/error_log。此时,您可以中止该守护进程(这将删除 FD,从而删除相应的文件),将这个临时文件复制到所需的位置,然后重新启动该守护进程。
  16. 对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。正如您所看到的,有些操作系统(以及不同版本的lsof)比其他的系统更容易查找相应的数据。



阅读(692) | 评论(0) | 转发(0) |
0

上一篇:ps命令

下一篇:没有了

给主人留下些什么吧!~~