一、针对大文件类型日志
今天找到了一个17G的nginx日志(崩溃),一般情况下我们在设置日志的时候,会设置单个日志文件的最大值,超过就会进行分割,还会设置保留天数。但是由于规范问题,还是会出现意料之外的大文件
# 查找大于100兆的文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
二、针对小文件堆积成大文件夹
当日志文件都是小文件,但是积累了很多。这个时候通过查找大文件的方式就无能为力了。这个时候需要通过查找linux下大文件目录来找到了。
# 查看/var/log目录下第一层级所有文件夹大小
du -h /var/log --max-depth=1 | sort -nr
# 当文件夹太多的时候,可以使用排序,获取前5个。但是要统一单位
du -hm /var/log --max-depth=1 | sort -nr | head -5
参数解析
- -h 带单位,自适应单位类型
- -hm 使用M为单位
- –max-depth=1 指定文件夹下的第一层级文件夹大小
- sort -nr 排序
- head -5 取前5个
三、清理日志
对于历史日志,可以直接通过rm -rf
删除
对于正在输入的日志,如果直接通过 rm -rf
删除日志,我们可以通过df -h发现磁盘并没有释放。
原因是在Linux或者Unix系统中,通过rm -rf
或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > 文件名
四、参考博客与文档
https://www.cnblogs.com/gspsuccess/p/9262140.html
https://www.cnblogs.com/nshgo/p/12916059.html
https://blog.csdn.net/weixin_41945228/article/details/104331479