Linux下logrotate按小时轮转失效,如何解决?
解决logrotate按小时轮转不生效的问题
以下是排查和解决的具体步骤:
检查定时任务触发频率
默认的logrotate通常是按天执行(通过/etc/cron.daily/logrotate),哪怕配置了hourly,如果定时任务没每小时运行,也不会触发小时级轮转。解决方式:- 复制daily的脚本到hourly目录:
cp /etc/cron.daily/logrotate /etc/cron.hourly/ - 如果你用systemd管理定时任务,需要修改
logrotate.timer的配置,将OnCalendar设为hourly,然后重启timer:systemctl edit logrotate.timer,添加内容:
然后执行[Timer] OnCalendar=hourly Persistent=truesystemctl daemon-reload && systemctl restart logrotate.timer
- 复制daily的脚本到hourly目录:
验证配置文件语法正确性
用调试模式检查配置是否有语法错误:logrotate -d /path/to/your/logrotate.conf,仔细查看输出内容,确认没有报错或警告。手动测试轮转是否生效
强制触发轮转,验证配置本身是否能正常工作:logrotate -f /path/to/your/logrotate.conf,执行后检查日志目录下是否生成了轮转后的压缩文件,原日志是否被截断。检查logrotate状态文件
logrotate会在/var/lib/logrotate.status记录每个日志文件的上次轮转时间,查看该文件确认对应日志的时间是否异常。如果时间记录错误,可以手动修改,或者用-f强制轮转后更新状态。确认日志文件权限
确保logrotate运行用户(一般是root)对/var/adm/ras/cherrypy/下的日志文件有读写权限,否则无法完成轮转操作。可以用ls -l /var/adm/ras/cherrypy/查看权限,必要时调整:chown root:root /var/adm/ras/cherrypy/*.log
内容的提问来源于stack exchange,提问作者hundun
相关产品推荐
相关产品推荐

