说明
logrotate工具可以用来实现根据预定义的规则定期轮转日志文件,并删除旧的日志文件。可以在系统上设置适当的日志轮转规则来管理通用日志文件。
这个对于生成的日志,比如一直只有一个日志的话,可以避免日志过大或过多的问题。
其实对于软件生成的日志,软件自身也可以实验相关的清理逻辑,只不过使用logrotate是借助外部程序来进行管理。
使用
配置文件路径
/etc/logrotate.conf(主配置)和/etc/logrotate.d/*(子配置)
/etc/logrotate.d/目录下是具体的配置,一般是以服务名称命名(自定义名称即可),比如yum等配置。主配置和子配置有冲突时,以子配置的规则为准。
使用
比如我们需要把/home/log.log这个文件进行处理,我们可以在/etc/logrotate.d下面增加一个test文件,内容如下:
/home/log.log {
missingok
weekly
rotate 10
size +100k
compress
dateext
notifempty
create 0600 root root
}
说明:
- missingok:日志切割时缺少该日志不会报错
- weekly:每周切割一次
- rotate 10:切割后最多保留10个文件
- size +100M:当前日志容量超过100M时,立即进行日志切割
- compress:切割后的日志进行压缩
- dateext:切割后的日志以时间’年月日’为后缀
- notifempty:日志为空时不进行切割
- create 0600 root root:切割时创建一个新日志文件,模式为0600,日志属组为root root
如果是mysql的日志文件,由于权限问题,root root 可能需要改为mysql mysql
执行
logrotate的执行是借助crond的,在/etc/cron.daily目录下,可以看到logrotate文件脚本,其内容就是执行logrotate程序。
我们可以手动执行该文件,测试上面我们所配置的。
/etc/cron.daily大概在每天的 4点12分执行。
参考
https://blog.csdn.net/weixin_40547071/article/details/122298274
https://www.jianshu.com/p/a488feefd701