我的一台运行16.04的服务器遇到了问题:磁盘空间不足。
我不知道占用了什么空间。有没有列出当前目录大小的命令,所以我可以遍历并最终占据所有空间的目录?
与Linux中一样,有多种方法可以完成工作。但是,如果需要通过CLI进行操作,这是我的首选方法:
我首先以root或sudo的身份运行它:
du -cha --max-depth=1 / | grep -E "M|G"
grep将返回行限制为以MB或Gigabyte范围内的值返回的行。如果磁盘足够大,则也可以添加|T
以包括TB级的数量。您可能会在/proc
,/sys
和/或上遇到一些错误,/dev
因为它们不是磁盘上的真实文件。但是,它仍应为根目录中的其余目录提供有效的输出。找到最大的目录后,您可以在该目录内运行命令,以缩小罪魁祸首的范围。因此,例如,如果/var
最大的话,您可以接下来执行以下操作:
du -cha --max-depth=1 /var | grep -E "M|G"
那应该导致您遇到问题的孩子们!
其他注意事项
尽管上面的命令肯定可以解决问题,但是我在下面的评论中提出了一些建设性的批评,指出了您还可以包括的一些内容。
grep
返回提供可能导致偶尔的“K”值我如果目录或文件的名字有一个大写G或M.如果你绝对不希望任何的K值的目录显示出来,你会想起来您的正则表达式游戏更具创意和复杂性。例如grep -E "^[0-9\.]*[MG]"
如果您知道哪个驱动器是问题所在,并且它上面还有其他挂载的驱动器,而且您不想浪费时间进行搜索,可以-x
在du
命令中添加该标志。该标志的手册页描述:
-x, --one-file-system
skip directories on different file systems
您可以对du
命令的输出进行排序,以使最大值位于底部。只需将其附加到命令末尾即可:| sort -h
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句