前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、检查是否磁盘空间不足

ssh登录机器,执行 df -h 命令查看磁盘空间使用情况,一般 Use% > 85%时需要清理

1.1、若为容器,

若为容器,查看 / 目录 和 /docker 目录的使用情况;

[zhangyujin06@set-gh-windmill-riding-bikestatus-test02 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:2-33671654-d47ae77ea3384f2ac538bb7a77074e45646b095af4850ebd6054751e1e5abc6c
                      9.8G  2.6G  6.7G  28% /
tmpfs                  63G     0   63G   0% /dev
tmpfs                  63G     0   63G   0% /sys/fs/cgroup
/dev/sdj1              20G  9.8G  8.9G  53% /docker
/dev/sda2             100G   12G   89G  12% /dev/termination-log
/dev/sda2             100G   12G   89G  12% /etc/hostname
/dev/sda2             100G   12G   89G  12% /etc/hosts
shm                    64M     0   64M   0% /dev/shm
/dev/sda2             100G   12G   89G  12% /run/secrets
tmpfs                  63G   12K   63G   1% /var/run/secrets/kubernetes.io/serviceaccount
tmpfs                  64M     0   64M   0% /run
tmpfs                  64M     0   64M   0% /run/lock
tmpfs                  64M     0   64M   0% /var/log/journal
/dev/sda2             100G   12G   89G  12% /var/log/journal/4854d2045313e320b830a75210d51a7f
tmpfs                  63G     0   63G   0% /proc/acpi
tmpfs                  63G     0   63G   0% /proc/kcore
tmpfs                  63G     0   63G   0% /proc/keys
tmpfs                  63G     0   63G   0% /proc/timer_list
tmpfs                  63G     0   63G   0% /proc/sched_debug
tmpfs                  63G     0   63G   0% /proc/scsi

1.2、若为虚拟机或物理机

若为虚拟机或物理机,查看 / 目录和 /opt 目录的使用情况

┌─[healerjean@MAC] - [~]
└─[$] df -h                                                                                                                                                            [19:47:58]
Filesystem       Size   Used  Avail Capacity iused      ifree %iused  Mounted on
/dev/disk1s5s1  466Gi   14Gi  384Gi     4%  559993 4881892887    0%   /
devfs           191Ki  191Ki    0Bi   100%     660          0  100%   /dev
/dev/disk1s4    466Gi  4.0Gi  384Gi     2%       6 4882452874    0%   /System/Volumes/VM
/dev/disk1s2    466Gi  351Mi  384Gi     1%    1551 4882451329    0%   /System/Volumes/Preboot
/dev/disk1s6    466Gi  2.1Mi  384Gi     1%      19 4882452861    0%   /System/Volumes/Update
/dev/disk1s1    466Gi   63Gi  384Gi    15%  763538 4881689342    0%   /System/Volumes/Data
map auto_home     0Bi    0Bi    0Bi   100%       0          0  100%   /System/Volumes/Data/home

2、du 命令找出占用空间较大的目录

2> /dev/null 代表忽略掉错误提示信息(比如没有权限查看等)

#如果为/opt告警,则 遍历/opt下2层目录,从大到小排序显示前10个目录文件的大小(可根据现场需要修改命令中遍历的层级和目录)
du -h --max-depth=2 /opt/ 2>/dev/null  | sort -rh | head  
du -h --max-depth=2 /opt/  | sort -rh | head  



#如果为/告警,则 遍历/下2层目录,从大到小排序显示前10个目录文件的大小(可根据现场需要修改命令中遍历的层级和目录)
du -h --max-depth=2 / 2>/dev/null  | sort -rh | head 
du -h --max-depth=2 /  | sort -rh | head  

3、进入空间较大的目录准备删除

echo '' > 命令 清空 或 rm 命令删除 日志文件或临时目录,以下是几种常见方法及命令:

注:为防止rm删除了有进程正在引用的文件、导致文件句柄未释放进而引起磁盘空间的浪费,比较建议使用echo命令清空文件

3.1、echo清空一个文件

echo '' > 文件名.log   

3.2、批量清空多个log文件

# 批量echo清空1天以前的日志文件,可根据现场需要修改命令参数
for i in `find /opt/logs/logs/ -type f -mtime +1 -name "*.log" 2>/dev/null`; do echo '' >$i; done

# 批量echo清空500M以上的日志文件,可根据现场需要修改命令参数
for i in `find /opt/logs/logs/ -type f -size +500M -name "*.log" 2>/dev/null`; do echo '' >$i; done

# rm删除10小时以前修改过的.log文件 
find /opt/logs/logs/ -type f -min +600 -name "*.log" 2>/dev/null | xargs -i rm -fr {}


4、验证

接着再按照1中进行就可以了

ContactAuthor