logrotate日志切割
简介
linux上的自动日志切割工具。
工作原理
在/etc/cron.daily/下面有个配置文件logrotate,所以logrotate会每天被执行一次。logrotate的配置文件是/etc/logrotate.conf,这个里面放的是全局配置,自定义配置一般放到/etc/logrotate.d/下面。
配置
| 配置 | 意义 |
|---|---|
| compress | 默认启用的配置,会使用gzip压缩历史日志。 |
| copytruncate | 复制日志文件内容到备份文件,然后将日志文件截断到0。 |
| create | 直接重命名原来的日志文件,然后创建新的日志文件,然后让读写日志文件的进程重新打开日志文件。这种工作方式需要进程能重新打开日志文件。这种方式比copytruncate效率高很多。 |
| rotate | 保留多少个历史文件 |
| daily | 每天切割一次日志,还可以设置为weekly,monthly |
| dateext | 历史日志添加日期作为后缀,类似配置dateyesterday |
| prerotate/endscript | 执行日志切割前执行的脚本 |
| postrotate/endscript | 执行完日志切割后再执行的脚本 |
实践
在我的systemd基础文章里面配置了一个monitor.service,使用vmstat记录系统状态到日志文件/home/monitor/vmstat.log,这里配置一个日志切割,将vmstat.log每天切割一次
#添加日志切割配置/etc/logrotate.d/vmstat
/home/monitor/vmstat.log {
daily
rotate 100
dateyesterday
compress
missingok
create 644 root root
prerotate
systemctl stop mvmstat.service
endscript
postrotate
systemctl start mvmstat.service
endscript
}
注:建议还是配置prerotate停止服务之后做日志切割,或者切换日志后通知进程重新打开日志文件,否则会产生文件空洞。

浙公网安备 33010602011771号