logrotate command in Linux

背景

在生产过程中,由于磁盘空间、保留周期等因素,会对系统、应用等日志提出要求,要求系统日志定期进行轮转、压缩和删除,从而减少开销,而系统自带的 logrotate 则是一个简单又实用的小工具,下面着重介绍一下,满足日常需求。

语法

Usage: logrotate [OPTION...] <configfile></configfile>

常用参数 :

-f非设定周期内强制运行

-d调试,对日志模拟进行操作

-v可视化执行过程结果

其它参数不常用,详情见下:

[root@test01 ~]# logrotate --help
Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
  -l, --log=STRING          Log file
  --version                 Display version information

Help options:
  -?, --help                Show this help message
  --usage                   Display brief usage message
[root@test01 ~]#</configfile>

配置文件

logrotate 配置主要有两个

  • 常规主配置文件地址 /etc/logrotate.conf 不建议对其修改
  • 自定义配置文件 /etc/logrotate.d 这里存放用户自定义文件,通常建议将个人文件放到这里
[root@test01 ~]# cd /etc/logrotate.d/
[root@test01 logrotate.d]# ll
total 16
-rw-r--r--. 1 root root  91 Aug  6  2019 bootlog
-rw-r--r--. 1 root root 224 Aug  6  2019 syslog
-rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Aug  8  2019 yum
[root@test01 logrotate.d]#

为保证 /etc/logrotate.d 定义的文件能够执行生效,需要确保 /etc/logrotate.conf 这句话没有注释,如有注释,需手动取消:

RPM packages drop log rotation information into this directory
include /etc/logrotate.d

配置文件demo及参数

以下是我个人一个配置文件,可以直接拿来结合自己需求进行修改:

/var/log/linuxserver/linux.log {
        rotate 7
        size 200M
        daily
        compress
        delaycompress
        missingok
        notifempty
        noolddir
        copytruncate
        dateext
        dateformat .%s
        create 660 root root
}

文件格式主要是以日志路径和日志切割参数组成:

第一行:指明 需要进行切割的日志路径,可以结合正则表达式,例如 /path/*.log ,指定路径下所有的日志

第二行:以 { } 包含 logrotate所需要的参数,demo包含了基本常用到的几个参数,此外还有如下部分参数,参数含义如下:

&#x65E5;&#x5FD7;&#x538B;&#x7F29;&#x53C2;&#x6570;
compress                 &#x901A;&#x8FC7;gzip &#x538B;&#x7F29;&#x8F6C;&#x50A8;&#x4EE5;&#x540E;&#x7684;&#x65E5;&#x5FD7;
delaycompress            &#x548C;compress &#x4E00;&#x8D77;&#x4F7F;&#x7528;&#x65F6;&#xFF0C;&#x8F6C;&#x50A8;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x5230;&#x4E0B;&#x4E00;&#x6B21;&#x8F6C;&#x50A8;&#x65F6;&#x624D;&#x538B;&#x7F29;
nodelaycompress          &#x8986;&#x76D6; delaycompress &#x9009;&#x9879;&#xFF0C;&#x8F6C;&#x50A8;&#x540C;&#x65F6;&#x538B;&#x7F29;
nocompress               &#x4E0D;&#x505A;gzip&#x538B;&#x7F29;&#x5904;&#x7406;
&#x5BF9;&#x622A;&#x65AD;&#x540E;&#x7684;&#x65E5;&#x5FD7;&#x5904;&#x7406;&#x53C2;&#x6570;
copytruncate             &#x7528;&#x4E8E;&#x8FD8;&#x5728;&#x6253;&#x5F00;&#x4E2D;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#xFF0C;&#x628A;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x5907;&#x4EFD;&#x5E76;&#x622A;&#x65AD;&#xFF1B;&#x662F;&#x5148;&#x62F7;&#x8D1D;&#x518D;&#x6E05;&#x7A7A;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x62F7;&#x8D1D;&#x548C;&#x6E05;&#x7A7A;&#x4E4B;&#x95F4;&#x6709;&#x4E00;&#x4E2A;&#x65F6;&#x95F4;&#x5DEE;&#xFF0C;&#x53EF;&#x80FD;&#x4F1A;&#x4E22;&#x5931;&#x90E8;&#x5206;&#x65E5;&#x5FD7;&#x6570;&#x636E;&#x3002;
nocopytruncate           &#x5907;&#x4EFD;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x4E0D;&#x8FC7;&#x4E0D;&#x622A;&#x65AD;
create mode owner group  &#x8F6E;&#x8F6C;&#x65F6;&#x6307;&#x5B9A;&#x521B;&#x5EFA;&#x65B0;&#x6587;&#x4EF6;&#x7684;&#x5C5E;&#x6027;&#xFF0C;&#x5982;create 0777 nobody nobody
nocreate                 &#x4E0D;&#x5EFA;&#x7ACB;&#x65B0;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;
dateext                  &#x4F7F;&#x7528;&#x5F53;&#x671F;&#x65E5;&#x671F;&#x4F5C;&#x4E3A;&#x547D;&#x540D;&#x683C;&#x5F0F;
dateformat .%s           &#x914D;&#x5408;dateext&#x4F7F;&#x7528;&#xFF0C;&#x7D27;&#x8DDF;&#x5728;&#x4E0B;&#x4E00;&#x884C;&#x51FA;&#x73B0;&#xFF0C;&#x5B9A;&#x4E49;&#x6587;&#x4EF6;&#x5207;&#x5272;&#x540E;&#x7684;&#x6587;&#x4EF6;&#x540D;&#xFF0C;&#x5FC5;&#x987B;&#x914D;&#x5408;dateext&#x4F7F;&#x7528;&#xFF0C;&#x53EA;&#x652F;&#x6301; %Y %m %d %s &#x8FD9;&#x56DB;&#x4E2A;&#x53C2;&#x6570;
&#x57FA;&#x672C;&#x53C2;&#x6570;
missingok                &#x5982;&#x679C;&#x65E5;&#x5FD7;&#x4E22;&#x5931;&#xFF0C;&#x4E0D;&#x62A5;&#x9519;&#x7EE7;&#x7EED;&#x6EDA;&#x52A8;&#x4E0B;&#x4E00;&#x4E2A;&#x65E5;&#x5FD7;
errors address           &#x4E13;&#x50A8;&#x65F6;&#x7684;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&#x53D1;&#x9001;&#x5230;&#x6307;&#x5B9A;&#x7684;Email &#x5730;&#x5740;
ifempty                  &#x5373;&#x4F7F;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x4E3A;&#x7A7A;&#x6587;&#x4EF6;&#x4E5F;&#x505A;&#x8F6E;&#x8F6C;&#xFF0C;&#x8FD9;&#x4E2A;&#x662F;logrotate&#x7684;&#x7F3A;&#x7701;&#x9009;&#x9879;&#x3002;
notifempty               &#x5F53;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x4E3A;&#x7A7A;&#x65F6;&#xFF0C;&#x4E0D;&#x8FDB;&#x884C;&#x8F6E;&#x8F6C;
mail address             &#x628A;&#x8F6C;&#x50A8;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x53D1;&#x9001;&#x5230;&#x6307;&#x5B9A;&#x7684;E-mail &#x5730;&#x5740;
nomail                   &#x8F6C;&#x50A8;&#x65F6;&#x4E0D;&#x53D1;&#x9001;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;
&#x65E7;&#x65E5;&#x5FD7;&#x5B58;&#x653E;&#x53C2;&#x6570;
olddir directory         &#x8F6C;&#x50A8;&#x540E;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x653E;&#x5165;&#x6307;&#x5B9A;&#x7684;&#x76EE;&#x5F55;&#xFF0C;&#x5FC5;&#x987B;&#x548C;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x5728;&#x540C;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x7CFB;&#x7EDF;
noolddir                 &#x8F6C;&#x50A8;&#x540E;&#x7684;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x548C;&#x5F53;&#x524D;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x653E;&#x5728;&#x540C;&#x4E00;&#x4E2A;&#x76EE;&#x5F55;&#x4E0B;
logrotate &#x6267;&#x884C;&#x524D;&#x540E;&#x94A9;&#x5B50;&#x53C2;&#x6570;
sharedscripts            &#x8FD0;&#x884C;postrotate&#x811A;&#x672C;&#xFF0C;&#x4F5C;&#x7528;&#x662F;&#x5728;&#x6240;&#x6709;&#x65E5;&#x5FD7;&#x90FD;&#x8F6E;&#x8F6C;&#x540E;&#x7EDF;&#x4E00;&#x6267;&#x884C;&#x4E00;&#x6B21;&#x811A;&#x672C;&#x3002;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x914D;&#x7F6E;&#x8FD9;&#x4E2A;&#xFF0C;&#x90A3;&#x4E48;&#x6BCF;&#x4E2A;&#x65E5;&#x5FD7;&#x8F6E;&#x8F6C;&#x540E;&#x90FD;&#x4F1A;&#x6267;&#x884C;&#x4E00;&#x6B21;&#x811A;&#x672C;
prerotate                &#x5728;logrotate&#x8F6C;&#x50A8;&#x4E4B;&#x524D;&#x9700;&#x8981;&#x6267;&#x884C;&#x7684;&#x6307;&#x4EE4;&#xFF0C;&#x4F8B;&#x5982;&#x4FEE;&#x6539;&#x6587;&#x4EF6;&#x7684;&#x5C5E;&#x6027;&#x7B49;&#x52A8;&#x4F5C;&#xFF1B;&#x5FC5;&#x987B;&#x72EC;&#x7ACB;&#x6210;&#x884C;
postrotate               &#x5728;logrotate&#x8F6C;&#x50A8;&#x4E4B;&#x540E;&#x9700;&#x8981;&#x6267;&#x884C;&#x7684;&#x6307;&#x4EE4;&#xFF0C;&#x4F8B;&#x5982;&#x91CD;&#x65B0;&#x542F;&#x52A8; (kill -HUP) &#x67D0;&#x4E2A;&#x670D;&#x52A1;&#xFF01;&#x5FC5;&#x987B;&#x72EC;&#x7ACB;&#x6210;&#x884C;
&#x6267;&#x884C;&#x5468;&#x671F;&#x53C2;&#x6570;
daily                    &#x6307;&#x5B9A;&#x8F6C;&#x50A8;&#x5468;&#x671F;&#x4E3A;&#x6BCF;&#x5929;
weekly                   &#x6307;&#x5B9A;&#x8F6C;&#x50A8;&#x5468;&#x671F;&#x4E3A;&#x6BCF;&#x5468;
monthly                  &#x6307;&#x5B9A;&#x8F6C;&#x50A8;&#x5468;&#x671F;&#x4E3A;&#x6BCF;&#x6708;
logrotate &#x89E6;&#x53D1;&#x6761;&#x4EF6;&#x53C2;&#x6570;
rotate count             &#x6307;&#x5B9A;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x5220;&#x9664;&#x4E4B;&#x524D;&#x8F6C;&#x50A8;&#x7684;&#x6B21;&#x6570;&#xFF0C;0 &#x6307;&#x6CA1;&#x6709;&#x5907;&#x4EFD;&#xFF0C;5 &#x6307;&#x4FDD;&#x7559;5 &#x4E2A;&#x5907;&#x4EFD;
size(&#x6216;minsize) log-size &#x5F53;&#x65E5;&#x5FD7;&#x6587;&#x4EF6;&#x5230;&#x8FBE;&#x6307;&#x5B9A;&#x7684;&#x5927;&#x5C0F;M&#x3001;G&#x65F6;&#x624D;&#x8F6C;&#x50A8;

执行触发时间

logrotate默认走的是 crond服务 ,执行语句脚本存放在 /etc/cron.daily/ 目录下,主要脚本: /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

logrotate command in Linux

默认触发时间配置文件存在 /etc/anacrontab ,默认执行时间 每日 3.45-22.45 时间段随机执行一次。缺点是具体执行时间不容易掌握,通常不建议用户对该文件进行修改,如果需要定期执行,建议用户可以在 vim /etc/crontabcrontab&#xA0; -e 按照 crond 格式设定执行时间,以便更好的分配脚本执行时间,避免机器资源集中使用,减少机器负载。

logrotate command in Linux

Original: https://www.cnblogs.com/xiong97/p/16500392.html
Author: 静言善思
Title: logrotate command in Linux

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611786/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL架构

    1_逻辑架构 1.1.连接层 系统(客户端)访问MySQL服务器前,做的第一件事就是 &#x5EFA;&#x7ACB;TCP&#x8FDE;&#x6…

    数据库 2023年5月24日
    0103
  • 2022-8-31 jsp el表达式

    jsp 注意:1、JSP脚本片段中只能出现java代码,不能出现HTML元素。在 访问JSP时,JSP引擎翻译JSP页面中的脚本片段。2、JSP脚本片段中的java代码必须严格遵守…

    数据库 2023年6月14日
    072
  • python: can’t open file ‘upload.py’: [Errno 2] No such file or directory

    为了发博客方便,参考别人的文章(见参考文章:[1][2]),使用 Metaweblog 和 pycnblog([3])插件实现相关功能,将本地markdown文件同步至博客园。使用…

    数据库 2023年6月14日
    085
  • 掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵

    💡 作者:韩信子@ShowMeAI📘 Python3◉技能提升系列:https://www.showmeai.tech/tutorials/56📘 本文地址:https://www…

    数据库 2023年6月14日
    098
  • postman自动化测试

    postman做接口的自动化测试case 记录一次自动化测试的工作,以及该过程中对于测试设计的一些思考。 postman工具 简单介绍,这个工具无论是开发还是测试,使用来调试接口的…

    数据库 2023年6月6日
    0122
  • jenkins

    jenkins 1.简介 1.1 SVN介绍 1.2 Maven介绍 1.3 Ant介绍 1.4 Gradle介绍 1.5 jenkins工作原理 1.6 jenkins特点 2….

    数据库 2023年6月14日
    063
  • 23种设计模式之命令模式

    文章目录 概述 命令模式的优缺点 命令模式的应用场景 命令模式的结构和实现 * 模式的结构 模式的实现 总结 ; 概述 命令模式(Command Pattern)是一种数据驱动的设…

    数据库 2023年6月6日
    0131
  • “10X 程序员是如何思考的” 阅读总结

    开发新需求前的四个思考原则(不能自答出来就问产品经理) 这个功能不做会怎么样?有没有什么替代方案? DoD(Definition of Done,完成的定义) 在做事前,先定义完成…

    数据库 2023年6月6日
    0135
  • 【StoneDB Class】入门第二课:StoneDB整体架构解析

    StoneDB 的整体架构分为三层,分别是应用层、服务层和存储引擎层。应用层主要负责客户端的连接管理和权限验证;服务层提供了 SQL 接口、查询缓存、解析器、优化器、执行器等组件;…

    数据库 2023年5月24日
    074
  • Java面试题(九)–Spring MVC

    1、Spring MVC中的拦截器和Servlet中的filter有什么区别? 过滤器:依赖于servlet容器,在实现上基于函数回调,可以对几乎所有请求进行过滤 拦截器:依赖于w…

    数据库 2023年6月16日
    078
  • 高并发组件了解

    消息队列 A服务和多个服务耦合,内部维护对多个服务发送数据的接口,那么这些接口如果有的挂了,有的不需要了,那么还得修改A内部的代码,如果使用MQ,A发送消息就好,不必考虑那么多事情…

    数据库 2023年6月16日
    067
  • mybatis collection解析以及和association的区别

    1.collection标签 说到mybatis的collection标签,我们肯定不陌生,可以通过它解决一对多的映射问题,举个例子一个用户对应多个系统权限,通过对用户表和权限表的…

    数据库 2023年6月16日
    088
  • MySQL 数据备份与恢复

    数据备份 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据以 SQL 的形式将存储生成的文本文件 mysqldump -u username -…

    数据库 2023年5月24日
    0131
  • 浅谈DDD中的聚合

    DDD分为战略部分跟战术部分,相信大家都认同DDD的核心在战略而非战术。而战略方面的核心我认为在业务建模,领域划分、统一语言等都在为业务建模服务。 为什么业务建模重要? 以前的开发…

    数据库 2023年6月14日
    082
  • 多线程

    public class 多线程 { static boolean flag = true; static class t1 implements Runnable{ @Overr…

    数据库 2023年6月16日
    0102
  • JUC部分并发类使用方式

    下面介绍的是JUC包下一些线程安全类的一些简单使用和一些小demo。 信号量,即可以同时使用的线程数,tryrequire就是将信号量减一,release就是信号量+1,当等于0就…

    数据库 2023年6月11日
    063
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球