logrotate

logrotate

  • 系统默认自带就有这个包,运行靠的是 cron(安装时创建任务)。
    [root@argor ~]# rpm -ql logrotate
    /etc/cron.daily/logrotate
    /etc/logrotate.conf
    /etc/logrotate.d
    /etc/rwtab.d/logrotate
    /usr/sbin/logrotate
    /usr/share/doc/logrotate-3.8.6
    /usr/share/doc/logrotate-3.8.6/CHANGES
    /usr/share/doc/logrotate-3.8.6/COPYING
    /usr/share/man/man5/logrotate.conf.5.gz
    /usr/share/man/man8/logrotate.8.gz
    /var/lib/logrotate
    /var/lib/logrotate/logrotate.status
    [root@argor ~]#
    View Code

    第一行显示的就是 

  • 通过 rpm 包安装的程序,会自动备 logrotate 处理。
    默认会安装自己的logrotate配置文件到【/etc/logrotate.d】路径。而 logrotate 执行时的主配置文件会包含该目录。
  • 强制轮替
    logrotate -f /etc/logrotate.conf
    View Code

    默认一周执行四次程序,依据配置文件信息处理

      3 weekly
      4 
      5 # keep 4 weeks worth of backlogs
      6 rotate 4
    为啥一周四次轮替,主配置文件起到的作用

配置

  • 例子:删除前每周轮替5次,轮换后执行脚本
           /var/log/messages {
               rotate 5
               weekly
               postrotate
                   /usr/bin/killall -HUP syslogd
               endscript
           }
    
    # 定义如何处理文件 /var/log/messages
    # rotate 定义删除前的轮替次数(或者邮递前),
    # weekly[weekday] 默认为 0,表示星期天
    # 执行个脚本,从缩进就能想到咋回事!
    # 但是这里的脚本并不会被执行,因为没有 sharedscripts。
    # 而 默认就有 nosharedscripts,可以被 sharedscripts 所覆盖。
    View Code
  • 例子:同时定义两个文件的轮换规则

           "/var/log/httpd/access.log" /var/log/httpd/error.log {
               rotate 5
               mail www@my.org
               size 100k
               sharedscripts
               postrotate
                   /usr/bin/killall -HUP httpd
               endscript
           }
    # mail 日志删除前,邮递地址
    # size 仅当日志大于指定大小值时才轮替(可以是纯数字,或者带上k,m,g,不分大小写)
    # sharedscripts 默认不生效,必须显示出现
    View Code

    大小超过 100K 轮替一次,5次轮替后,将要被删除的文件会被邮递出去。

  • 实例:轮替自定义文本文件
    /root/demo {
        rotate 5
        weekly 2
    }
    配置轮替规则

    强制轮替,查看效果

    [root@argor logrotate.d]# logrotate -f /etc/logrotate.conf
    [root@argor logrotate.d]# ll /root
    total 28
    -rw-r--r-- 1 root root     0 Jun 23 20:39 demo
    -rw-r--r-- 1 root root 21924 Jun 23 20:39 demo-20200623
    View Code

    这个实例生效,只能说明是把要轮替的文件加进去了。

logrotate

一切代码都是为了生活,一切生活都是调剂
原文地址:https://www.cnblogs.com/argor/p/8178092.html