Logrotate简介
Logrotate是Linux中日志分割、压缩、清理的工具,一般CentOS默认都会安装该工具。
logrotate运行原理
logrotate依赖于anacron执行每小时、每天、每周或每月的定时任务,corn每个小时会扫描当前机器中定时任务执行状态。
logrotate运行依赖的文件:
- /etc/cron.daily/logrotate ——logrotate具体执行命令脚步
- /etc/logrotate.conf ——logrotate配置文件
- /etc/anacrontab ——anacrontab配置文件
- /var/lib/logrotate/logrotate.status ——记录清理日志状态的文件
- /var/spool/anacron/cron.daily ——当前anacron已经执行的日期
- /etc/logrotate.d/* ——自定义清理日志的配置文件,优先级高于logrotate.conf
自定义logrotate配置文件步骤和配置文件参数解读
- 在/etc/logrotate.d/目录下新建文件,例如nginx
# Rotate nginx log
/nginx/logs/*.log {
daily
rotate 10
missingok
notifempty
sharedscripts
dateext
size 10M
postrotate
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
endscript
}
- 示例配置文件参数解读,若有其他需要可以自行翻阅资料
- /nginx/logs/*.log —— 需要清理的日志路径
- daily ——清理的周期,可以选择的其他周期为weekly、monthly
- rotate ——需要保留的日志文件的数量
- missingok —— 忽略报错直接执行
- notifempty —— 空文件不会执行日志清理
- sharedscripts —— 当有多个日志文件清理时,只有最后一个日志清理执行脚本。否则每个日志清理完都会执行脚本
- dateext ——使用日期作为后缀
- postrotate ——日志执行完后需要执行的命令或者脚本
- size ——当日志文件大于10M才执行日志清理
logrotate命令格式简介
logrotate [OPTION...]
参数解释
- -d,--debug模式 测试配置文件是否存在错误,不会具体执行配置文件中的任务
- -f,--force 强制执行日志清理
- -v,--verbose显示详细执行过程
调试nginx清理日志配置文件是否正确:logrotate -d /etc/logrotate.d/nginx
强制清理nginx日志:logrotate -f /etc/logrotate.d/nginx
显示详细清理过程:logrotate -v /etc/logrotate.d/nginx