logrotate command in Linux

背景

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

语法

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

常用参数 :

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

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

-v可视化执行过程结果

其他参数不常用。详情请参考:

[En]

Other parameters are not commonly used. For more information, please see:

[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及参数

以下是我的配置文件,可以根据自己的需要直接修改:

[En]

The following is a configuration file for me, which can be directly modified according to my own needs:

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

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

[En]

The file format is mainly composed of log path and log cutting parameters:

第一行:指明 需要进行切割的日志路径,可以结合正则表达式,例如 /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/523052/

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

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球