1、logrotate 原理

logrotate也就是日志滚动,服务器日志文件大小增长较快,不断消耗磁盘空间就会触发告警,需要人为定期按照各种维度去手动清理日志就显得十分棘手。为了节省空间和方便整理,可以将日志文件按时间或大小分成多份,删除时间久远的日志文件,这就是通常说的日志滚动。

logrotate 是一个 linux 系统日志的管理工具。可以对单个日志文件或者某个目录下的文件按时间、大小进行切割、压缩操作;指定日志保存数量;还可以在切割之后运行自定义命令。

logrotate 是基于 crontab 运行的,所以这个时间点是由 crontab 控制的,具体可以查询 crontab 的配置文件 或者 。 系统会按照计划的频率运行 logrotate,通常是每天。在大多数的 Linux 发行版本上,计划每天运行的脚本位于 。


2、logrotate 默认配置

默认配置文件

/etc/logrotate.conf

默认配置目录,此目录下是系统软件的一些日志滚动配置

/etc/logrotate.d/*.conf

logrotate.conf 通过 include 指令,引入 logrotate.d 目录下的自定义的配置文件


可执行文件
/usr/sbin/logrotate

3、logrotate 参数


4、示例

4.1、创建配置目录

mkdir /home/logrotate
mkdir /home/logrotate/logrotate.d
cd /home/logrotate

4.2、logrotate.conf 配置

创建logrotate.conf文件

vim logrotate.conf

logrotate.conf内容

include /home/logrotate/logrotate.d

4.3、日志分割配置

需要分割日志的服务,把分割日志的配置文件放在一下下目录

cd /home/logrotate/logrotate.d

nginx

dateext
dateformat -%Y-%m-%d

/home/nginx/logs/monitor/*/*.log {
        daily
        missingok
        rotate 7
        compress
        nodelaycompress
        notifempty
        olddir /home/nginx/logs/backup
        copytruncate
        extension.log
        sharedscripts
}

4.4、定时启动

添加定时任务

crontab -e

定时命令,每天0:01执行日志分割

01 0 * * * logrotate -f /home/logrotate/logrotate.conf

重启定时服务

systemctl restart crond.service
05-19 13:12