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 官方出品,比 mydumper 更快的多线程逻辑备份工具-MySQL Shell Dump & Load

    mysqldump 和 mydumper 是我们常用的两个逻辑备份工具。 无论是 mysqldump 还是 mydumper 都是将备份数据通过 INSERT 的方式写入到备份文件…

    数据库 2023年5月24日
    088
  • JDK安装

    环境变量–>新建JAVA_HOME–>D:\Environment\java\jdk1.8 配置path变量–>新建%JAVA…

    数据库 2023年6月11日
    097
  • Matery主题自定义(一)黑夜模式

    黑夜模式 作为一个前端学习者,自然懂得黑夜模式的重要性,可惜主题原生未提供,那就自己弄吧 参考其他优秀产品的黑夜模式,得出共性: 那就是黑夜模式的背景一般不会是纯黑(#000);而…

    数据库 2023年6月16日
    079
  • 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实…

    数据库 2023年6月11日
    0118
  • Java面试题(十)–Spring Cloud

    1 基础知识篇 1、什么是微服务架构? 微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协…

    数据库 2023年6月16日
    0107
  • MySQL建表语句生成Golang代码

    1. 背景 对于后台开发新的需求时,一般会先进行各种表的设计,写各个表的建表语句 然后根据建立的表,写对应的model代码、基础的增删改查代码(基础的增删改查服务可以划入DAO(D…

    数据库 2023年6月14日
    093
  • SQL的多表查询

    显示内连接: select 字段列表 from 表1 [inner] join 表2 on 连接条件; (PS:方括号(“[]”)内的为可选项;) (注意:…

    数据库 2023年6月16日
    0119
  • CompletableFuture方法全解

    public class SpringbootWebApplicationTests { private final Logger logger = LoggerFactory.g…

    数据库 2023年6月6日
    085
  • Java-课堂笔记

    用Typora重新排版了下, 发现还有挺多问题, 手动排版好像也不识别. 太麻烦就这样了, 课堂笔记只是证明自己没有上课摸鱼, 这里的笔记是当初疫情上网课写的. 以后会按照路线重新…

    数据库 2023年6月11日
    087
  • MySQL删除重复数据

    重复数据如图所示 自关联,保留id最小的那一条,其它的都删除 DELETE t1 FROM invest_year t1, invest_year t2 WHERE t1.pro_…

    数据库 2023年6月14日
    092
  • Linux 7安装Mysql5.7版本

    Mysql 5.7的安装搭建 首先去到官方网站的下载链接中找到对应你Linux服务器版本的mysql软件包 https://dev.mysql.com/downloads/repo…

    数据库 2023年5月24日
    0100
  • proxySQL with SemiSync

    配置读写分离 先查看一下规则表的表结构 https://github.com/sysown/proxysql/wiki/Main-(runtime)#mysql_query_rul…

    数据库 2023年6月16日
    084
  • Java List分批处理

    工作中经常遇到分批处理的问题,比如将一个List列表中的数据分批次保存至数据库中。如果列表中数据条目很大,比如1000万条以上,mysql中 max_allowed_packet …

    数据库 2023年6月14日
    0103
  • 515. 在每个树行中找最大值

    515. 在每个树行中找最大值 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。 示例1: 输入: root = [1,3,2,5,3,null,9]输出: […

    数据库 2023年6月16日
    0103
  • 牛客SQL刷题第三趴——SQL必知必会

    【问题】编写 SQL 语句,从 Products 表中检索产品名称(prod_name)和描述(prod_desc),仅返回在描述中以先后顺序同时出现 toy 和 carrots …

    数据库 2023年6月16日
    0101
  • MySQL8.0解决“MySQL 服务无法启动。 服务没有报告任何错误。”

    TL;NRs 初始化服务时最好使用 mysqld –initialized –console命令; MySQL8.0的配置变量与MySQL5.7不同, [mysqld]下面设置…

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