每日一个Linux命令解析——logrotate

每日一个Linux命令解析——logrotate

经验文章nimo972025-06-04 0:52:014A+A-

logrotate 是 Linux 下用于管理日志文件的工具,它可以根据指定的策略定期轮转、压缩、删除或邮件发送日志文件。

一、语法

logrotate [OPTION...] <configfile>

二、选项

-d, --debug 不执行任何操作,只测试并打印调试信息

-f, --force 强制进行日志轮转

-m, --mail=command 用指定的命令发送邮件(替代 `/usr/bin/mail`)

-s, --state=statefile 指定状态文件的路径

--skip-state-lock 不锁定状态文件

-v, --verbose 在轮转期间显示消息

-l, --log=logfile 指定日志文件路径或使用 'syslog' 来记录到系统日志

--version 显示版本信息

帮助选项:

-?, --help 显示此帮助信息

--usage 显示简要的使用信息

三、基本配置结构及解析

  1. 结构
/var/log/example.log {
    daily                # 日志轮转频率,可以是 daily, weekly, monthly 等
    rotate 7             # 保留 7 个轮转的日志文件
    compress             # 压缩老的日志文件,通常为 `.gz` 格式
    delaycompress        # 延迟压缩,轮转后一个周期再压缩
    missingok            # 忽略日志文件缺失的情况,不报错
    notifempty           # 如果日志为空,则不进行轮转
    create 0640 root adm # 创建新的日志文件,权限为 0640,所有者为 root,所属组为 adm
    postrotate           # 轮转日志之后执行的命令
        systemctl reload example.service > /dev/null 2>/dev/null || true
    endscript
}
  1. 解析:
  • daily, weekly, monthly: 定义日志轮转的频率,分别表示每天、每周和每月轮转一次日志。
  • rotate: 指定轮转的日志文件保留的数量,超出这个数量的旧日志将被删除。
  • compress: 启用日志压缩,通常使用 gzip 压缩格式。
  • delaycompress: 延迟压缩,轮转日志后不会立即压缩,而是在下一次轮转时压缩之前的日志。
  • missingok: 如果日志文件不存在,则不报错并跳过该文件。
  • notifempty: 如果日志文件为空,则不进行轮转。
  • create: 在轮转后创建一个新的日志文件,指定权限和所有者。
  • postrotate/endscript: 在日志轮转后执行的脚本,通常用于重启服务或重新加载配置。
  • 四、命令行使用

    logrotate -d /etc/logrotate.conf # 测试 logrotate 配置,不执行任何操作

    logrotate -f /etc/logrotate.conf # 强制执行日志轮转

    logrotate -v /etc/logrotate.conf # 显示详细输出

    五、示例

    • nginx日志文件配置,这段配置每天轮转一次 Nginx 日志,保留 14 天的日志,旧日志会在轮转后的第二天压缩。
    /var/log/nginx/*.log {
        daily
        rotate 14
        compress
        delaycompress
        missingok
        notifempty
        create 0640 www-data adm
        postrotate
            [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
        endscript
    }



    六、总结

    logrotate命令 用于对系统日志进行轮转、压缩和删除,也可以将日志发送到指定邮箱。使用 logrotate指令,可让你轻松管理系统所产生的记录文件。每个记录文件都可被设置成每日,每周或每 月处理,也能在文件太大时立即处理。您必须自行编辑,指定配置文件,自定义预设的配置文件存放 在 /etc/logrotate.d文件夹下。

    #Linux命令#

    点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
    qrcode

    尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7