我遇到了一个非常奇怪的问题,我的 centos 服务器上的硬盘显示使用率为 99%。我执行了几个命令来列出最大的文件,但没有显示任何大于 9.9G 的文件,即 Web 目录。以下是一些输出:
[root@desync-arpa /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 453G 421G 8.6G 99% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
/dev/sda1 97M 53M 40M 58% /boot
/dev/sda4 2.0G 68M 1.9G 4% /tmp
/dev/sdb 459G 643M 435G 1% /mnt/disk2
[root@desync-arpa /]# du --max-depth=1 -h /
4.0K /srv
1.1G /home
339M /etc
4.0K /media
445M /mnt
568M /root
du: cannot access `/proc/26016/task/26016/fd/4': No such file or directory
du: cannot access `/proc/26016/task/26016/fdinfo/4': No such file or directory
du: cannot access `/proc/26016/fd/4': No such file or directory
du: cannot access `/proc/26016/fdinfo/4': No such file or directory
0 /proc
188K /dev
7.7M /bin
4.0K /selinux
284K /tmp
16K /lost+found
0 /sys
15M /sbin
5.6G /var
52M /boot
26M /lib64
8.0K /opt
259M /lib
1.3G /usr
9.6G /
[root@desync-arpa /]#
所有文件夹加起来占用了 18G 空间。我真的很难找到所有这些大文件,任何帮助都将不胜感激。
答案1
我建议你尝试使用基于 ncurses 的命令行实用程序 NCDU。它将扫描你的磁盘并允许你使用 ncurses 界面浏览它。以下是示例:
--- /tmp ----------------------------------------------------------------------
393.7MiB [##########] web_www_2015-02-17.tar.gz
57.8MiB [# ] /builder
23.3MiB [ ] /config-prod
15.0MiB [ ] web_db_2015-02-17.sql.gz
您只需移动光标并使用回车键即可深入目录。
要安装它,只需运行:
# yum install ncdu
注意:您需要 EL5/6 上的 EPEL 存储库才能使用 ncdu。
稍后,要在特定的 FS 上运行它:
# ncdu -x /path/to/mountpoint
-x 表示 - 仅扫描当前 FS。
编辑:如果您仍然找不到占用磁盘空间的文件,则可能是这些文件已被删除但仍处于打开状态。例如,日志文件就可能发生这种情况。要查找这些文件,请运行以下命令:
# lsof | grep deleted
要删除这些文件,您需要停止持有这些文件的进程。释放磁盘空间的另一种方法是查看 proc 文件系统,找到这些文件句柄,然后清空这些文件。文件名将是输出的最后一列,因此只需复制它并在 /proc 中找到指向它的符号链接,然后清空该文件:
# > /proc/<pid>/fd/<number>