当前位置:首页 > 技术文章 > 正文内容

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

arlanguage4个月前 (12-24)技术文章35

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

    扫描二维码推送至手机访问。

    版权声明:本文由AR编程网发布,如需转载请注明出处。

    本文链接:http://www.arlanguage.com/post/415.html

    分享给朋友:

    “每日一个Linux命令解析——logrotate” 的相关文章

    nginx配置静态资源服务器 nginx配置静态资源服务器的方法

    nginx服务器搭建在这就不过多的说明了,本内容主要是nginx静态资源服务器配置相关说明nginx配置location / :指所有的url请求都会去访问static下面的文件;指定url后缀要与文件目录后面的后缀一一对应有两种用法:root:绝对路径;alias: nginx安装目录中的stat...

    平稳运行半年的系统宕机了,记录一次排错调优的全过程

    (一)前言最近发生了一件很让人头疼的事情,已经上线半年且平稳运行半年系统在年后早高峰的使用时发生了濒临宕机的情况。访问速度特别慢,后台查到大量time_wait的连接,从代码层面到架构层面到网络层面排查了几天几夜,总算是有了结果。(二)架构、问题描述先简单描述一下这个系统的架构,公网域名对应的公网I...

    一文教会你如何使用 iLogtail SPL 处理日志

    作者:阿柄随着流式处理的发展,出现了越来越多的工具和语言,使得数据处理变得更加高效、灵活和易用。在此背景下,SLS 推出了 SPL(SLS Processing Language) 语法,以此统一查询、端上处理、数据加工等的语法,保证了数据处理的灵活性。iLogtail 作为日志、时序数据采集器,在...

    Linux Shell

    基本语法第一行第一行必须是 #!/bin/sh。它不是注释,#!/bin/sh 是对shell的声明,说明你所用的是那种类型的shell及其路径所在如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell如果脚本被编写为在Kornshell...

    一起学习Kubernetes:容器和镜像

    简述容器每个运行的容器都是可重复的;包含依赖环境在内的标准,意味着无论你在哪里运行它都会得到相同的行为。容器将应用程序从底层的主机设施中解耦。 这使得在不同的云或 OS 环境中部署更加容易。Kubernetes 集群中的每个节点都会运行容器,这些容器构成分配给该节点的 Pod。 单个 Pod 中的容...

    从入门到精通,超详细的程序员Java学习路线指南

    说明最近也有很多人来向我"请教",他们大都是一些刚入门的新手,还不了解这个行业,也不知道从何学起,开始的时候非常迷茫,实在是每天回复很多人也很麻烦,所以在这里统一作个回复吧。Java学习路线当然,这里我只是说Java学习路线,因为自己就是学Java的,对Java理当很熟悉,对于其它方...