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

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命令#

    相关文章

    你还在为 Spring Boot3 读取 Nginx 的 Access.log 日志发愁?

    你有没有过这样的经历?在互联网大厂后端开发的工作中,想要利用 Spring Boot3 读取 Nginx 的 Access.log 日志,进行深入分析,却总是困难重重。明明知道这些日志里藏着用户行为、...

    你是不是也遇到过:Spring Boot3 读 Nginx 日志文件时无从下手?

    在互联网大厂后端开发领域,对 Nginx 的 Access.log 日志进行深度分析是保障系统稳定运行、优化服务性能的关键环节。作为后端开发人员,我们期望从这些日志中挖掘用户访问行为、接口调用情况等有...

    Nginx access_log 运行日志查询和配置

    1. 介绍当我们学会Nginx的基本配置之后,可以通过Nginx配置Service代理。管理服务器所有的http和https请求。那么接下来就需要了解Nginx的日志控制,以及相关的文档查看了。你通过...

    fluent-bit 收集nginx日志

    简介Fluent Bit 是一款快、轻且高度可扩展的日志和指标采集器。与logstash对比更省资源。nginx日志可以让我们分析出很多信息,多个应用采集到elasticsearch之后,可以让查询统...

    Nginx负载均衡:nginx.conf配置文件说明!

    大家好,欢迎来到程序视点!我是你们的老朋友.小二!在此记录下Nginx服务器nginx.conf负载均衡的配置文件说明, 部分注释收集与网络.关于nginx.conf基本的配置,请查看上一篇文章!Ng...

    nginx打印请求头日志方法-openresty

    一、前言之前想用nginx打印收到的请求的请求头,但是只找到打印请求体的,没有打印请求头的,感觉原版nginx不支持。建议如果想打印请求头,先换成openresty(本人安装的是openresty-1...