`
bnmnba
  • 浏览: 288871 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

du查看的目录大小与df查看的大小不同的时候用lsof查找 (转)

 
阅读更多

首先MAN一下俩个命令,看一下解释的区别:

du - estimate file space usage

df - report file system disk space usage

du估计文件空间占用情况,df报告文件系统磁盘空间使用情况。两个命令所要获取的对象时不同的。在linux下,几乎所有东西都可以称为文件,常规文件,二进制文件,socket流。所以,通常情况下,使用du得到到的根路径文件空间占用情况应当与df得到的文件系统磁盘占用的情况是一直的或者说相差无几。但是在某些情况下却会出现du得到的空间占用情况要远小于df得到的。

后通过查询,发现问题出现在deleted文件上。

root下lsof | grep deleted会发现多多少少有些文件状态出于deleted状态。

[root@eb152 ~]# lsof |grep deleted

进程名   PID       USER    FD   文件类型        大小(字节)  索引节点  文件名  [(状态)]

java       3311    AuSP    8w      REG              253,0         778   10879268 ***.log (deleted)

java       3311    AuSP    9w      REG              253,0        3275   10879269 ***.log (deleted)

java       3311    AuSP   10w      REG              253,0           0   10879815 ***.log (deleted)

java       3311    AuSP   11w      REG              253,0           0   10879816 ***.log (deleted)

oracle     4195  oracle    7u      REG              253,0           0   14254321 *** (deleted)

状态为deleted为标记被删除,其实该文件并没有从磁盘中删除,类似windows下的回收站状态。

据称当有其他进程打开某文件时文件被删除,就会将该文件标记为deleted,并删除其目录节点。使用du查看时,因为没有该删除状态文件的节点信息,所以就不做统计,从而导致与df的结果不一致。

若要将deleted状态文件删除,则根据pid直接kill调相应进程即可。

找回被删除文件:

根据以上分析,若删除的文件仍有进程进行操作是有找回数据的可能的。

quote:

若删除的文件为系统日志中的secure文件,则可以根据以下方法找回:

# lsof |grep /var/log/secure

 

syslogd 2574 root 2w REG 253,0 1099 525125 /var/log/secure (deleted)

可以看到进程号为2574的syslogd进程仍然打开了/var/log/secure这个文件,这个文件所显示状态是deleted,已经被删除。现在FD文件描述符是2w。它的意思是文件描述符是2,状态是w写。

我们可以根据这个在/proc/2574/fd/2找到被删除的/var/log/secure的内容。

当文件被误删时,切忌reboot操作。

 

http://my.oschina.net/zphj1987/blog/77878

http://www.linuxfly.org/post/575/

 

分享到:
评论

相关推荐

    使用lsof查找打开的文件

    因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,所以能够查看这个列表将是很有帮助的。完成这项任务的实用程序称为 lsof,它对应于“list open files”(列出打开的文件)。几乎在每个 ...

    linux使用lsof命令查看文件打开情况

    主要给大家介绍了关于在linux中利用lsof命令如何查看文件打开情况的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    lsof.zip lsof离线安装包

    解压安装包 tar -zxvf lsof_4.76.tar.gz 解压源码包 cd lsof_4.76 tar -xvf lsof_4.76_src.tar 编译源码 cd lsof_4.76_src ./Configure linux ...ln -s /root/songzehao/lsof_4.76/lsof_4.76_src/lsof /usr/bin

    用lsof恢复删除的文件

    lsof恢复删除的文件 工具也是命令

    lsof-master交叉编译之后的lsof命令

    交叉编译完成的lsof命令,适合在arm-cpu架构的服务器上使用

    linux_lsof.rar

    linux lsof源码

    Linux命令lsof详解

    lsof全名,list opened files,也就是列举系统中已经被打开的文件。用好lsof命令,对日常的linux管理非常有帮助。

    lsof_4.76.tar.gz

    使用二进制安装包的方式,为linux系统下载安装lsof命令

    lsof 4.81源码

    在网上看到许多人将lsof的源码拿来卖分,像这种开源资源也要花资源分去下载,看着真是有点不地道!特传至此,免费下载! lsof命令在嵌入式中还是挺有用的,而在一般的嵌入式系统中,并没有移植该命令,需要自己移植...

    Linux磁盘空间被未知资源耗尽的解决方法

    这种情况下,通过df和du命令查找的磁盘空间,两者是无法匹配的,可能df显示磁盘100%,而du查找目录的磁盘容量占用却很小。 遇到这种情况,基本可以断定是某些大文件被某些程序占用了,并且这些大文件已经被删除了,...

    lsof solaris 10 sparc

    很难找的lsof for sparc,solaris 10和solaris 11的两个包我都上传了,安装很简单,一条命令 pkgadd -d lsof.4.87.SPARC.64bit.Solaris.11.pkg

    lsof-4.89-ia64_64-11.31.depot.gz

    hpux lsof安装包

    磁盘满了,为啥du却显示还有很大空间

    • du:disk usage • df:disk free • lsof:list open files • echo "" > access.log

    lsof安装包

    HP unix系统下的一个很有用的工具包。

    centos7.4.1708 的lsof的rpm包及其依赖

    本资源是在centos7.4.1708的docker系统使用yum下载的lsof的rpm包及其相关依赖,可以避免某些centos版本无lsof的尴尬。

    lsof-4.87-6.el7.x86_64.rpm

    lsof-4.87-6.el7.x86_64.rpm centos7.4 lsof

    ScoUnix系统lsof命令源码

    lsof源码,可在SCOUNIX环境下编译,root权限执行。

    solaris 10可用的lsof

    solaris 10可用的lsof 不容易找到

    lsof安装包for aix6.1&7.1

    lsof_4.89。lsof是IBM提供的免费AIX使用工具,能够输出进程和进程占用的端口和文件。依次安装license,man en_us,base。ok!就可以使用了!

    lsof_4.73.tar.gz

    lsof_4.73.tar.gz HP UX下 查看端口对应的应用程序

Global site tag (gtag.js) - Google Analytics