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 ~]#
第一行显示的就是
- 通过 rpm 包安装的程序,会自动备 logrotate 处理。
默认会安装自己的logrotate配置文件到【/etc/logrotate.d】路径。而 logrotate 执行时的主配置文件会包含该目录。 - 强制轮替
logrotate -f /etc/logrotate.conf
默认一周执行四次程序,依据配置文件信息处理
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 所覆盖。
-
例子:同时定义两个文件的轮换规则
"/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 默认不生效,必须显示出现
大小超过 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
这个实例生效,只能说明是把要轮替的文件加进去了。
logrotate