Linux:如何定位partition磁盘被写满的原因?

我们的服务器经常被各种程序或者mysql的log写满磁盘。那么,我们如何迅速判断到底一个分区里是那几个文件过大,导致磁盘被写满呢?

在大多数的情况下,我们可以使用du这个命令。

  1. 查看目录以及各个子目录,看它们的大小,不要忘记用--exclude来排除不需要的目录,我们以 / 来举例说名,例如/proc,/dev,/media,/run,/tmp 等。
    du -h / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media

     

  2. 也不要忘记用-x来排除非在一个分区里的目录,我们经常把一个目录从主目录李分离出来,放到另一分区里,例如/root,/opt 等。
    du -hx / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media

     

  3. 因为得到的有目录和文件,我们要用grep分离出需要的部分,由于输出的大小比较复杂,我们需要用grep的pcre部分的正则表达式。
    du -hx / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media | grep -E "^[0-9].*?[0-9]G"

     

通过以上的方法,我们就可以基本知道是哪个目录占用的最大的磁盘空间。

posted @ 2016-08-11 20:35  nhuang2  阅读(507)  评论(0编辑  收藏  举报