首页/系统/Linux 运维命令速查/定时任务日志的轮转配置
定时任务与计划50 条

定时任务日志的轮转配置

任务日志不轮转会吃满磁盘:给 /var/log/app 配 logrotate(按天+压缩+保留 N 份),并让脚本无需处理切割信号。

Linux 运维命令速查系统更新于 2026-10-13

任务日志轮转是什么

定时任务把输出重定向到 /var/log 下的文件,脚本自己不会切分文件,长期追加必然吃满磁盘。logrotate 用一份声明式配置说明轮转节奏、保留份数与压缩策略,由系统自带调度每天调用一次,不必为每个任务单独写清理逻辑。

基本信息

适用平台Linux(logrotate 由 cron、anacron 或 systemd timer 驱动)
配置目录/etc/logrotate.d/ 下每个服务一个文件
常用指令daily、rotate N、compress、copytruncate、create、notifempty、missingok
验证方式logrotate -d 干跑查看计划,logrotate -vf 立即强制运行

典型使用场景

  • 任务日志逐日归档:按天切割并压缩,保留 14 份覆盖两周排查窗口
  • 日志被脚本长期持有:脚本不重开文件时用 copytruncate 原地截断,避免出现进程仍写已被切走的旧文件
  • 多文件统一策略:一条通配路径覆盖 /var/log/app/*.log,不用逐文件维护
  • 进程支持重开日志:用 postrotate 发信号让进程自己重开,比截断更无损
  • 控制保留成本:压缩与保留份数直接决定磁盘占用,属于容量规划的一部分

轮转配置示例

轮转配置示例
# /etc/logrotate.d/app-jobs
/var/log/app/*.log {
    daily                # 按天切割
    rotate 14            # 保留 14 份
    compress             # 归档即压缩
    delaycompress        # 最近一份不压缩,便于仍在写入的进程
    missingok            # 文件不存在不报错
    notifempty           # 空文件不轮转
    copytruncate         # 原地截断,进程无需重开日志
    create 0640 root adm # 新文件的属主与权限
}

验证与强制运行

验证与强制运行
sudo logrotate -d /etc/logrotate.d/app-jobs    # 干跑:只打印计划动作
sudo logrotate -vf /etc/logrotate.d/app-jobs   # 立即强制执行一次并输出详情
ls -lh /var/log/app/                          # 确认新文件与压缩归档
logrotate -d /etc/logrotate.d/app-jobs 2>&1 | head -n 20

常用指令对照

指令作用说明
daily / weekly / monthly轮转周期日志量大时可改用 size 触发
rotate N保留份数超出 N 份的最旧文件被删除
compress / delaycompress归档压缩delaycompress 保留最近一份未压缩
copytruncate截断而非改名进程持有句柄时使用,可能丢一行
create 0640 root adm新文件属性不写时新文件可能属主不正确
dateext归档名带日期便于人工定位,可配合 dateformat
持续持有日志句柄的脚本用 copytruncate,进程不必重开文件;但截断与下一次写入之间存在极小概率丢一行。
支持重开日志的进程优先用 postrotate 加信号(如 nginx 的 USR1),无损且不丢行。
copytruncate 对大文件会瞬时产生大量磁盘 IO,GB 级日志应选在低峰期执行或改用信号方案。

易错点

  • copytruncate 存在极小概率丢一行写入,高价值日志应改用 postrotate 信号方案
  • 新日志文件的属主或权限没写 create 参数,轮转后任务写不进去,表现为任务突然报权限错误
  • 配置里的路径写错不会报错,logrotate 只是找不到文件,配完先用 logrotate -d 确认命中了哪些文件
  • 保留份数与压缩没限制的日志最终仍会吃满磁盘,rotate 与 compress 必须一起给

数据来源与参考

  • man 8 logrotate
  • man 5 logrotate.conf

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌