欢迎来到李先生的博客

深山的鹿,不知归处;万般皆苦,只可自渡。
扩大
缩小

logrotate

1、logrotate是什么
 
logrotate自动对日志文件进行轮询,压缩、删除、和发送邮件。每个日志文件可以以每天、每个星期、每月的周期进行处理。通常的,logrotate设置成了定时任务每日执行一次。通俗的说,可以按照自己的需求对logrotate进行设置,如何处理一个文件,如我们经常用的nginx的访问日志,每日做一个切割
 
2、配置文件
 
/etc/logrotate.conf
/etc/logrotate.d/
/etc/logrotate.conf会包含/etc/logrotate.d/目录下的配置文件
 
3、常用命令
 
logrotate /etc/logrotate.conf    用配置文件的话,不能马上有效,直接使用命令马上可以生效
logrotate -f  /etc/logrotate.conf   强制执行
logrotate /etc/logrotate.conf -s ll.txt  -s 此次执行了轮询的文件输出到指定的文件,默认为/var/lib/logrotate/logrotate.status
 
4、常用配置:
 
compress:对轮询出来的日志文件进行压缩,默认我gzip
 
nocompress:对轮询出来的日志文件不进行压缩
 
compresscmd:指定使用什么方式进行压缩,默认为gzip。指定的格式为:compresscmd /usr/bin/bzip2
 
compressext: 指定压缩文件的后缀,如:compressext.bz2,默认随压缩方式的
 
uncompresscmd:解压方式,默认为gunzip   
 
copy:日志轮询的时候,对原日志文件进行copy,不改变原文件,相当于对原文件进行了一个快照,此选项使用的时候,create不生效
 
nocopy:对原日志文件不进行拷贝,此选项会覆盖copy选项
 
create mode owner group, create owner group:日志轮询后会创建一个新的原来名字的文件,可以设置权限和所属者或者所属组,如create 755 root lile
 
nocreate:轮询后不创建,也就是把要轮询的日志轮询后不会产生一个原来名字的文件,此选项会覆盖create
 
olddir directory:指定轮询出来的日志文件存放的目录
 
noolddir:轮询出来的日志文件放在与原日志文件一样的目录,此选项会覆盖olddir
 
createolddir mode owner group:当指定轮询日志存放路径的时候,若路径不存在,则创建
 
nocreateolddir: 当指定轮询日志存放路径的时候,若路径不存在,不创建,此选项会覆盖createolddir
 
hourly:  日志每小时做一次轮询
 
daily:     日志每天做一次轮询
 
weekly: 日志每个星期做一次轮询
 
monthly:日志每月做一次轮询         
    
yearly:日志每年做一次轮询
 
dateext:轮询出的日志名字后加上日期
 
nodateext: 轮询出的日志名字不使用日期的方式,此选项会覆盖dateext
 
dateformat format_string:日期的格式
 
dateyesterday:今天做的轮询的话,文件名的日期写昨天的
 
delaycompress:新的轮询日志不会马上压缩,等到下一个新的轮询日志出现的时候才做压缩,要与compress参数一起使用
 
nodelaycompress:不会延期压缩,轮询日志后会马上进行压缩,要与compress参数一起使用;此选项会覆盖delaycompress选项   
 
ifempty:即使日志文件为空,也要做轮询,默认为ifempty
 
notifempty:日志文件为空的话,不做轮询,会覆盖ifempty参数
 
missingok:如果要做日志轮询的日志文件不存在,那么忽略,接着做其他的
 
nomissingok:如果要做日志轮询的日志文件不存在,那么不会继续执行后面的,而会返回错误,默认为nomissing
 
maxage count:删除指定count天前的日志,如果配置了mail的话,删除的日志将会发送到指定的邮箱
 
start count:如果不使用dateext,轮询出的日志文件不会使用日期作为后缀,而会使用数字,star count 可以设置这个数字的开始至,如:start 9,那么就会以9开始,如log_file.9
 
rotate count:轮询文件的个数,当个数满了之后,会删除最老的
 
size size:只有当原日志文件的大小达到指定的size时,才做轮询,单位自定义 
    
postrotate/endscript:在日志被轮转后执行             
 
prerotate/endscript:在日志被轮转前并且有需要轮转才执行         
 
sharedscripts:当匹配文件夹里时,时间久后,会有很多以原文件加日期命名的轮询日志,而我只需要最匹配最原始的文件做轮询,这个选项就是为了做这个设置;如果没有的话,被轮询出来的日志再下一次轮询时也会被匹配到也做轮询
 
例:
 
nginx访问日志每天做日志分割
 
/var/log/nginx/*log {
    create 0644 nginx nginx
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

 

结果为:
 
 

 

posted on 2018-02-26 23:19  Captain_Li  阅读(1527)  评论(0编辑  收藏  举报

导航