简介
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
prerotaet
systemctl stop mvmstat.service
endscript
postrotate
systemctl start mvmstat.service
endscript
}