Linux logrotate命令的用法(附带实例)
日志轮替本质上是通过 logrotate 命令来执行的,我们也可以手工执行此命令。
logrotate 命令的语法格式如下:
执行 logrotate 命令,并查看执行过程:
我们发现,/var/log/mylog.log 日志已加入日志轮替,已经被 logrotate 命令识别并调用了,只是时间没有达到轮替的标准,因此没有进行轮替。那么,强制进行一次日志轮替,查看会有什么结果。
我们发现,/var/log/mylog.log 日志已经完成了日志轮替。查看新生成的日志和旧日志,具体如下:
logrotate 命令的语法格式如下:
[root@localhost ~]# logrotate [选项] 配置文件名选项:
- 如果此命令没有选项,就会按照配置文件中的条件进行日志轮替;
- -v:显示日志轮替过程。加入了 -v 选项,会显示日志的轮替过程;
- -f:强制进行日志轮替。不管日志轮替的条件是否符合,强制配置文件中所有的日志都进行轮替。
执行 logrotate 命令,并查看执行过程:
[root@localhost ~]# logrotate -v /etc/logrotate.conf # 查看日志轮替的流程 ...省略部分输出... rotating pattern: /var/log/mylog.log weekly (6 rotations) # 这就是我们自己加入轮替的 /var/log/mylog.log 日志 empty log files are rotated, old logs are removed considering log /var/log/mylog.log Creating new state Now: 2024-03-14 15:43 # 现在的时间 Last rotated at 2024-03-14 15:00 # 上次轮替时间 log does not need rotating (log has already been rotated) # 时间不够一周,因此不进行日志轮替 not running prerotate script, since no logs will be rotated not running postrotate script, since no logs were rotated # 轮替没有执行,当然在轮替中应执行的命令也没有执行 ...省略部分输出...
我们发现,/var/log/mylog.log 日志已加入日志轮替,已经被 logrotate 命令识别并调用了,只是时间没有达到轮替的标准,因此没有进行轮替。那么,强制进行一次日志轮替,查看会有什么结果。
[root@localhost ~]# logrotate -vf /etc/logrotate.conf # 强制进行日志轮替,不管是否符合轮替条件 ...省略部分输出... rotating pattern: /var/log/mylog.log forced from command line (6 rotations) empty log files are rotated, old logs are removed considering log /var/log/mylog.log Now: 2024-03-14 15:51 # 现在的时间 Last rotated at 2024-03-14 15:51 # 最后一次轮替时间 log needs rotating # 日志需要轮替 rotating log /var/log/mylog.log, log->rotateCount is 6 dateext suffix '-20240314' # 提取轮替日期参数 glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' set default create context to system_u:object_r:var_log_t:s0 glob finding old rotated logs failed running prerotate script # 运行 prerotate 指定的命令 set default create context to system_u:object_r:var_log_t:s0 renaming /var/log/mylog.log to /var/log/mylog.log-20240314 creating new /var/log/mylog.log mode = 0600 uid = 0 gid = 0 running postrotate script # 运行 postrotate 指定的命令 ...省略部分输出...
我们发现,/var/log/mylog.log 日志已经完成了日志轮替。查看新生成的日志和旧日志,具体如下:
[root@localhost ~]# ll /var/log/mylog.log [root@localhost ~]# ll /var/log/mylog.log* -rw-------. 1 root root 165 3 月 14 15:51 /var/log/mylog.log -rw-------. 1 root root 703 3 月 14 15:49 /var/log/mylog.log-20240314 # 旧的日志文件已经轮替 [root@localhost ~]# lsattr /var/log/mylog.log -------- /var/log/mylog.log # 新的日志文件被自动添加了 chattr 的 a 属性logrotate 命令在使用 -f 选项之后,就会不管日志是否符合轮替条件,而强制把所有的日志都进行轮替。