linux命令logrotate

2018-07-06 14:35:58

logrotate 可以根据配置文件 /etc/logrotate.conf,/etc/logrotate.d/ 来对日志文件进行轮替操作。

/etc/logrotate.conf 配置如下

# 默认一个礼拜轮替一次
weekly

# 默认保留4个日志文件
rotate 4

# 由于文件被改名,轮替后创建新文件
create

# 被轮替的文件后缀名用日期来显示
dateext

# 是否对轮替文件进行压缩
#compress

# 这里面的配置文件都会读进来
include /etc/logrotate.d

# 这里针对轮替文件进一步设置
# 同名的设置会覆盖上面的默认
/var/log/wtmp {
    monthly   #一个月轮替一次
    create 0664 root utmp   #指定新文件的权限,所属账号和群组
    minsize 1M       #一个月到了,如果文件小于1M,不轮替
    rotate 1    #只保留一个,比如 btmp-20180701
}

/var/log/btmp {
    missingok    #代表如果日志文件不存在,直接跳过不报错
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

/etc/logrotate.d/syslog

下面对4个日志文件进行轮替,如果要在{}里执行命令,则应该按照下面的格式,sharedscripts开头。
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    prerotate      #这里代表轮替之前执行的命令,这里只是为了举例子,没实际用处。
        ls -al || true
    endscript
    sharedscripts
    postrotate      #这里代表在轮替后重启 rsyslogd服务
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
[root@study ~]# logrotate [-vf] logfile
选项与参数:
-v :启动显示模式,会显示 logrotate 运行的过程喔!
-f :不论是否符合配置文件的数据,强制每个登录文件都进行 rotate 的动作!
#读取配置文件并检查,满足条件的则轮替
logrotate -v /etc/logrotate.conf

#强制轮替
logrotate -vf /etc/logrotate.conf

logrotate 由 crontab 每天都会执行一次检查,所以无需你操心,下面解释下几个额外配置参数。

#只有文件大于10M时,时间到了才会被轮替。
#文件不大于10M,时间到了也不会轮替
size=10M

#文件大于10M时,不管时间有没有到,都会轮替。
#文件不大于10M,时间到了也会轮替
maxsize 10M

#文件大于10M,且时间也要到了才轮替。
minsize 10M

#可以为dateext指定格式,man 3 strftime查询。
dateformat


备注:
1.本系列命令都在centos7里测试,其他发行版如ubuntu、debian、fedora、opensuse等可能略微不同
2.本文只讲解常用用法,详细用法请自行利用 man 命令查看
3.原文地址http://www.freecls.com/a/2712/8b

 

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。