Linux:如何定位partition磁盘被写满的原因?
我们的服务器经常被各种程序或者mysql的log写满磁盘。那么,我们如何迅速判断到底一个分区里是那几个文件过大,导致磁盘被写满呢?
在大多数的情况下,我们可以使用du这个命令。
- 查看目录以及各个子目录,看它们的大小,不要忘记用--exclude来排除不需要的目录,我们以 / 来举例说名,例如/proc,/dev,/media,/run,/tmp 等。
du -h / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media
- 也不要忘记用-x来排除非在一个分区里的目录,我们经常把一个目录从主目录李分离出来,放到另一分区里,例如/root,/opt 等。
du -hx / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media
- 因为得到的有目录和文件,我们要用grep分离出需要的部分,由于输出的大小比较复杂,我们需要用grep的pcre部分的正则表达式。
du -hx / --exclude=/proc --exclude=/run --exclude=/tmp --exclude=/media | grep -E "^[0-9].*?[0-9]G"
通过以上的方法,我们就可以基本知道是哪个目录占用的最大的磁盘空间。