首页主机资讯Ubuntu日志轮转策略有哪些

Ubuntu日志轮转策略有哪些

时间2025-11-14 14:22:04发布访客分类主机资讯浏览961
导读:Ubuntu日志轮转策略全览 一 核心机制与触发条件 在 Ubuntu 中,日志轮转由 logrotate 统一管理,配置文件位于 /etc/logrotate.conf 与 /etc/logrotate.d/。系统通常通过 /etc/c...

Ubuntu日志轮转策略全览

一 核心机制与触发条件

  • 在 Ubuntu 中,日志轮转由 logrotate 统一管理,配置文件位于 /etc/logrotate.conf/etc/logrotate.d/。系统通常通过 /etc/cron.daily/logrotate 每日触发执行,并在 /var/lib/logrotate/status 记录最近轮转状态。常用触发与保留策略包括:按时间(如 daily/weekly/monthly/yearly)、按大小(size)、以及按保留个数(rotate)。例如:按天轮转并保留 7 天、或每周轮转并保留 4 周等。

二 常用策略与关键参数

  • 下表汇总了实践中最常用、最实用的策略与参数(可按需组合使用):
策略/参数 作用与说明 典型示例
时间触发 按固定周期轮转 daily / weekly / monthly / yearly
大小触发 文件达到阈值即轮转 size 100M;可与时间条件“或”逻辑组合
保留数量 控制历史副本个数 rotate 7(保留7个旧日志)
压缩归档 节省磁盘空间 compress;配合 delaycompress 常用于 syslog
空文件处理 空日志不轮转 notifempty
缺失文件处理 日志缺失不报错 missingok
新建日志 轮转后创建新文件并设定权限属主 create 0640 root adm
复制后截断 避免重启应用,先复制再清空原文件 copytruncate(适用于不便发信号的应用)
轮转后通知 让进程重新打开日志文件 postrotate … endscript(如向进程发送 HUP/USR1)
日期后缀 以日期命名旧日志,便于追溯 dateext;dateformat -%Y%m%d
共享脚本 多个日志共享同一 postrotate sharedscripts
  • 说明:
    • 时间触发与大小触发可组合,满足任一条件即轮转(例如:daily 且 size 50M)。
    • rsyslog/syslog 等常驻服务,常用 postrotate 触发 HUP 重载,或使用 copytruncate 避免重启。
    • delaycompress 常与 compress 搭配,避免刚轮转出的日志立即被压缩,便于短期排查。

三 典型配置示例

  • 示例一 系统日志 rsyslog(按周轮转,保留一年)
/var/log/syslog {
    
    weekly
    rotate 52
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root adm
    postrotate
        /usr/lib/rsyslog/rsyslogd reload >
 /dev/null
    endscript
}

  • 示例二 Nginx 访问日志(按天或超 100MB 轮转,保留 30 天,日期后缀)
/var/log/nginx/*.log {

    daily
    size 100M
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0640 www-data adm
    dateext
    dateformat -%Y%m%d
    sharedscripts
    postrotate
        nginx -s reopen
    endscript
}

  • 示例三 应用日志(按天轮转,保留 7 天,复制后截断)
/var/log/myapp/*.log {

    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
    create 0640 root adm
}
    
  • 提示:不同服务的权限属主(如 root admwww-data adm)应与实际运行用户匹配,避免写入失败。

四 验证与运维要点

  • 语法与模拟:使用 logrotate -d /path/to/conf 进行干跑(调试模式),检查规则是否生效且无语法错误。
  • 强制执行:使用 logrotate -f /etc/logrotate.conf 或针对单个配置 -f /etc/logrotate.d/xxx 强制触发一次轮转,便于验证。
  • 定时与状态:确认 /etc/cron.daily/logrotate 存在且可执行;查看 /var/lib/logrotate/status 了解最近轮转时间与结果。
  • 应用通知:对需要重新打开日志的守护进程,优先使用 postrotate … endscript 发送信号(如 HUP/USR1);若不便发信号,再考虑 copytruncate
  • 权限与属主:确保 create 指定的 mode/owner/group 与应用运行身份一致,避免轮转后无法写入。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu日志轮转策略有哪些
本文地址: https://pptw.com/jishu/748023.html
Ubuntu日志中如何统计访问量 如何用grep在Ubuntu日志中搜索

游客 回复需填写必要信息