为什么df和du命令的输出之间存在差异?
为什么他们的输出不准确?
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 1012M 394M 567M 42% /
/dev/sda2 99M 47M 48M 50% /boot
/dev/sda8 9.9G 1.5G 7.9G 16% /home
none 1004M 0 1004M 0% /dev/shm
/dev/sda9 347G 93G 236G 29% /srv
/dev/sda11 2.0G 81M 1.8G 5% /tmp
/dev/sda10 4.0G 1.3G 2.6G 33% /usr
/dev/sda6 4.0G 2.1G 1.8G 55% /usr/local
/dev/sda5 20G 19G 0 100% /var
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,du -sh /var它会报告仅使用了 4.6G:
# du -sh /var
4.6G /var
Run Code Online (Sandbox Code Playgroud)
小智 8
造成这种情况的标准原因是某些用户进程将删除的文件保持打开状态。发生这种情况时,通过 'du' 看不到该空间,因为该文件在目录树中不再可见。但是,该空间仍由文件使用,直到它被释放,并且只有在打开文件的最后一个进程关闭其文件描述符或进程退出时才会发生这种情况。您可以使用lsof程序来尝试查找哪个进程保持打开的文件。通常它是一些日志文件或一些大型数据库文件被轮换出来,但一些较旧的进程仍然保持日志文件打开。