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 /vardu -h --max-depth=1
-
按照这种方法可以查到是哪个目录占用空间了,我这里查到目录是docker的容器目录:/var/lib/docker/containers,可以看到,有一个容器占用了59G磁盘
容器占用
-
查看docker容器,排查问题,可将容器的id和文件夹的名称的前几位做比较即可找出是哪个容器占用资源了。
docker ps -a
文件夹对应容器
- 找到问题之后即可根据实际情况处理,比如是清理对应文件夹还是对磁盘进行扩容等操作(新版ubuntu磁盘扩容可参考https://www.jianshu.com/p/1d919d64ce10)。