通过cron每小时执行logrotate实现按小时切割日志,需配置独立的logrotate规则文件并设置hourly、dateext及dateformat %Y%m%d%H,结合crontab定时任务和状态文件隔离,确保日志轮转不冲突且文件名含小时时间戳,便于追溯。

Linux系统默认的logrotate工具通常按天、周或月切割日志,但某些场景下需要更细粒度的控制,比如按小时切割。虽然logrotate本身不直接支持“每小时”轮转,但结合系统定时任务(cron)可以轻松实现。以下是完整的进阶配置方法。
logrotate的核心机制依赖于cron调度。要实现按小时切割,需确保logrotate每小时运行一次。
编辑系统crontab:
# crontab -e
添加以下行:
0 * * * * /usr/sbin/logrotate /etc/logrotate.d/myapp-hourly --state=/var/lib/logrotate/myapp-status --verbose
说明:
创建配置文件:
# vim /etc/logrotate.d/myapp-hourly
内容示例:
/var/log/myapp/app.log {
hourly
missingok
rotate 24
compress
delaycompress
notifempty
create 644 www-data www-data
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/myapp.pid 2>/dev/null` 2>/dev/null || true
endscript
}
关键参数解释:
默认情况下,logrotate生成的日志名为app.log.1.gz、app.log.2.gz等,无法直观看出切割时间。可通过自定义日期格式提升可读性。
修改配置:
dateext dateformat %Y%m%d%H
这样切割后的文件名为app.log-2025031514.gz,清晰标识到小时。
注意:hourly + dateformat %Y%m%d%H组合能确保每小时生成唯一文件名,避免覆盖。
首次配置建议手动测试:
logrotate -d /etc/logrotate.d/myapp-hourly
-d启用debug模式,显示执行逻辑但不实际操作。
确认无误后可强制运行一次:
logrotate -f /etc/logrotate.d/myapp-hourly
检查/var/log/myapp/目录下是否生成带小时时间戳的压缩文件,并确认应用是否正常写入新日志。
基本上就这些。通过cron驱动+logrotate hourly配置,就能实现稳定可靠的按小时日志切割,无需引入额外工具。关键是配置独立的状态文件和合理的时间命名,避免冲突和混乱。
以上就是Linux日志怎么切割_Linux日志使用logrotate按小时切割的进阶配置方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号