Linux 清理磁盘空间&使用du指令排查服务器磁盘占用过大的文件
Linux 清理磁盘空间
1,确定磁盘是否满了
命令:df -h
参数说明:
-a:列出所有的文件系统,包括系统特有的/proc等文件系统-k:以KB的容器显示各文件系统-m:以MB的容量显示各文件系统-h:以人们较易阅读的GB,MB,KB等格式自行显示-H:以 M=1000K代替M=1024K的进位方式-T:连同该分区的文件系统名称(例如ext3)也列出-i:不用磁盘容量,而以inode的数量来显示
结果参数说明:
Filesystem:代表该文件系统是在哪个分区,所以列出设备名称1k-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变容量Used:使用掉的磁盘空间Avail:剩下的磁盘空间大小Use%:磁盘使用率Mounted on:磁盘挂载的目录所在(挂载点)
显示每个目录的大小
命令:du -sh /*
参数说明:
-a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已-h:以人们较易读的容量格式(G/M)显示-s:列出总量,而不列出每个个别的目录占用了容量-S:不包括子目录下的统计,与-s油电差别-k:以KB列出容量显示-m:以MB列出容量显示
与df不一样的是,du会直接到文件系统内查找所有的文件数据。
du -S 显示当前目录下文件总容量(不好汉子目录),而du则在最后显示该目录所有文件的总容量(包含子目录)。
2,一般是直接去清理log,如果不是,则查找最大文件夹
命令:du -h --max-depth=1
寻找当前目录,哪个文件夹占用空间最大。
3,进入最大的那个文件夹,然后将文件以大到小顺序展现
命令:ls -lhS
将当前目录下的文件以大到小顺序展现。
4,清理文件。清理文件时,如果进程正在使用,使用rm -f 删除时要么会报错,要么即使删除了磁盘依旧是满的,所以使用清空文件内容命令优于删除此文件。
命令:echo ‘’>catalina.out
5,查看清理结果
命令: ls -lh 文件
服务器宕机了怎么办
启动机器,看能否登陆,如果能登陆,请检查
是否是应用程序导致内存溢出或泄露是否是进程过多或者不断创建,耗尽资源导致是否是数据库程序死锁,连接数过多导致是否是应用程序异常导致是否是流量负载过大导致是否是遭受黑客入侵攻击导致是否是误操作导致
如果无法查看故障现场,则可以查询系统日志看出异常记录。
Linux经常死机、卡住
检查服务器进程与服务是否占用了太多的内存或是否没有是否内存,当服务器内存用完后,然后就会很快宕机看看/var/spool/cron 里面是否有cron(计划任务、自动任务)在对应时间段执行检查web服务器的参数是否超过了服务器的性能,如允许最大连接数过高等进程数很高,服务瘫痪,机器假死(例如zombie进程是否过多,一直占用资源)cat /var/log/message 查看系统日志是否异常检查磁盘是否有坏块(可使用badblocks命令配合参数)内核消耗过大,查看是否有瞬间资源占用过大的进程或服务ps -ef 查看进程是否异常,是否存在 攻击
Linux使用du指令排查服务器磁盘占用过大的文件
查看服务器磁盘占用,可以看到根目录已占用99%了,需要立即处理。
df -h
查看磁盘占用
进入根目录并查看根目录下的一级目录占用情况,可以发现/var目录占用空间最大,然后继续排查/var目录的内容
cd /
du -h --max-depth=1
根目录占用情况
查看/var目录的占用情况
cd /var
du -h --max-depth=1
按照这种方法可以查到是哪个目录占用空间了,我这里查到目录是docker的容器目录:/var/lib/docker/containers,可以看到,有一个容器占用了59G磁盘 容器占用 查看docker容器,排查问题,可将容器的id和文件夹的名称的前几位做比较即可找出是哪个容器占用资源了。
docker ps -a
文件夹对应容器
找到问题之后即可根据实际情况处理,比如是清理对应文件夹还是对磁盘进行扩容等操作(新版ubuntu磁盘扩容可参考https://www.jianshu.com/p/1d919d64ce10)。