logrotate 命令
logrotate 命令会依据 /etc/logrotate.conf 配置文件的配置,来判断配置文件中的日志是否符合日志轮替的条件(比如,日志备份时间已经满一周),如果符合,日志就会进行轮替。|
格式
[root@localhost ~]# logrotate [选项] 配置文件名
选项:
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v: |
显示日志轮替过程。加入了-v选项,会显示日志的轮替过程 |
-f: |
强制进行日志轮替。不管日志轮替的条件是否符合,强制配置文件中所有的日志进行轮替 |
我们执行 logrotate 命令,并查看一下执行过程。
[root@localhost ~]# logrotate -v /etc/logrotate.conf
#查看日志轮替的流程
…省略部分输出…
rotating pattern:/var/log/alert.log weekly (6 rotations)
#这就是我们自己加入轮替的alert.log日志
empty log files are rotated, old logs are removed
considering log /var/log/alert.log
log does not need rotating
#时间不够一周,所以不进行日志轮替
…省略部分输出…
/var/log/alert.log 加入了日志轮替,已经被 logrotate 识别并调用了,只是时间没有达到轮替的标准,所以没有进行轮替。强制进行一次日志轮替,看看结果。
[root@localhost ~]# logrotate -vf /etc/logrotate.conf
#强制进行日志轮替,不管是否符合轮替条件
…省略部分输出…
rotating pattern:/var/log/alert.log forced from command line (6 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/alert.log
log needs rotating
#日志需要轮替
rotating log /var/log/alert.log,log->rotateCount is 6
dateext suffix '-20130607'
#提取日期参数
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
running prerotate script
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/alert.log to /var/log/alert.log-20130607
#旧的日志被重命名
creating new /var/log/alert.log mode = 0600 uid = 0 gid = 0
#创建新日志文件,同时指定权限、所有者和属组
running postrotate script
…省略部分输出…
alert.log 日志已经完成了日志轮替。查看一下新生成的日志和旧日志,如下:
[root@localhost ~]# ll /var/log/alert.log*
-rw-------.1 root root 0 6月 7 10:07 /var/log/alert.log
-rw-------.1 root root 237 6月 7 09:58 /var/log/alert.log-20130607
#旧的日志文件已经轮替
[root@localhost ~]# lsattr /var/log/alert.log
-----a-------e- /var/log/alert.log
#新的日志文件被自动加入了chattr的a属性
logrotate 命令在使用“-f”选项之后,就会不管日志是否符合轮替条件,而强制把所有的日志都进行轮替。