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停止服务之后做日志切割,或者切换日志后通知进程重新打开日志文件,否则会产生文件空洞。

posted @ 2023-05-29 10:58  董少奇  阅读(100)  评论(0)    收藏  举报