一 应用场景
作用:日志'切割'、日志'转储'、日志'防爆'
二 Centos7中logrotate是如何执行的
① /etc/cron.daily/下的脚本是在哪里设置的定时执行
[1] /etc/anacrontab文件里面'只定义'了cron.daily、cron.weekly与cron.monthly,而'没有'定义cron.hourly
[2] 因为cron.daily、cron.weekly与cron.monthly其实是'由cron.hourly调'起来的
[3] RANDOM_DELAY=45 这个是'随机的延迟时间',表示最大45分钟
[4] START_HOURS_RANGE=3-22 cron.daily会在'3:22+(5,45)'这个时间段执行
② logrotate
解读:'Centos7.7'是定时任务是'每日触发'
三 logrotate二进制
① 配置文件
################ "logrotate 的默认值" ################
weekly 默认'每一周执行一次'rotate轮转工作
rotate 4 保留'多少个'日志文件(轮转几次).默认保留四个.就是指定日志文件删除之前轮转的次数,0 指'没有备份'
create 自动创建'新'的日志文件,新的日志文件具有和原来的文件'相同的权限';因为日志被改名,因此要创建一个新的来继续存储之前的日志
dateext 这个参数很重要,就是切割后的日志文件'以当前日期为格式结尾',如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
compress 是否通过'gzip压缩'转储以后的日志文件.如xxx.log-20131216.gz;如果'不需要'压缩,注释掉就行
include /etc/logrotate.d 将 /etc/logrotate.d/ 目录中的'所有文件'都加载进来
/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的'规则'
monthly //'每月一次'切割,取代默认的一周
minsize 1M //文件大小'超过 1M' 后才会切割
create 0664 root utmp //指定'新建的日志文件'权限以及所属用户和组
rotate 1 //只'保留一个'日志.
}
备注:wtmp 可记录'用户登录系统'及'系统重启'的时间
日志转储的'配置文件'命名规则一般和'程序命名'相同
② logrotate命令的可选参数
③ 原理补充
[1]、配置文件里一定要配置'rotate 文件数目'这个参数,如果'不配置默认是0个',也就是'只允许'存在一份日志,刚切分出来的日志会马上被删除。
[2]、执行logrotate命令最好'加-f'参数,不然有时候配置文件修改的内容'不生效'
[3]、很多程序的会用到logrotate滚动日志,'比如nginx',它们安装后,会在/etc/logrotate.d这个目录下'增加自己'的logrotate的配置文件
需求:如果'等不及cron自动执行'日志轮转,想'手动强制'切割日志,需要'加-f'参数,不过'正式执行前'最好通过'debug选项'来验证一下
/usr/sbin/logrotate -d /etc/logrotate.d/nginx
/usr/sbin/logrotate -f /etc/logrotate.d/nginx
④ 案例
echo -e "/log/*.log\n { size 500M\\n copytruncate\\n rotate 10\\n maxage 100\\n }\\n" > /etc/logrotate.d/my-logrotate.conf
四 配置指令
① 压缩选项
② 日志轮转处理方式
③ 日志轮转周期配置
④ 日志不存在的处理方式
⑤ 轮转后日志扩展名配置
⑥ 轮转日志大小条件配置
⑦ 轮转后保存日志数量和起始序号配置
⑧ 轮转日志处理中邮件配置
⑨ 轮转日志处理中脚本配置 重点
⑩ 日志为空时的处理方式
⑪ 旧日志删除配置
-u, --remove 覆盖后'截断'并'删除'文件
⑫ 额外增加指定文件或目录名的配置
⑬ 使用指定user和group轮转日志