我在其中一台 UNIX 服务器上遇到空间问题。我正在执行以下命令来检查空间利用率。但这个命令非常慢,需要几个小时才能给出结果。
du -sg * | sort -nr >> /my/home/dir/space_20150303
有没有更好的方法来检查空间利用率?
答案1
这并不奇怪:除非系统已经为您跟踪,否则磁盘使用命令必须遍历所有目录条目,读取它们的大小并计算总和。
如果文件系统是远程安装的(NFS、Samba……),du
如果可能的话在服务器上运行,它会比在远程客户端上运行快得多。
由于您想了解所有文件,因此有一种方法可以跟踪磁盘使用情况并获得即时反馈。但是,这需要由系统管理员启用。这条路是配额。可以在不设置限制的情况下激活配额;这样您仍然可以跟踪每个用户使用的空间。
答案2
df
检查文件系统磁盘空间使用情况
df -a
显示所有文件系统磁盘空间使用情况的信息
df -h
以人类可读格式显示磁盘空间使用情况以及 GB 中的文件系统信息
df -hT /home
显示/home
文件系统信息
答案3
通常,可能只是一些大文件占用了意外的空间。找到这些信息可能很快,通常不会超过一两分钟。
寻找这些
cd (mount point)
find . -xdev -size +20000 -ls > /tmp/bigfiles
挂载点可以是根文件系统的 / 或您感兴趣的 /home。例如 cd /home
-xdev 表示不要跨越挂载点进入另一个文件系统,因为您只对已满的文件系统感兴趣。
+20000 表示仅查找大于 20000 x 512 字节块的文件或目录。例如,20000 大约为 10 mb。
-ls 表示列出文件或目录信息,类似于 ls -ld。
我通常将输出发送到 /tmp/bigfiles,这样我就可以修复每个问题,然后查看下一个问题,而无需重做 find cmd。
使用 less /tmp/bigfiles 查看 find cmd 的输出。