当前位置:首页>Linux>Linux日志管理工具—Logrotate的用法

Linux日志管理工具—Logrotate的用法

  • 2026-10-11 08:33:19
Linux日志管理工具—Logrotate的用法

 最近巡检发现生产系统一台数据库备份服务器根目录占用率较高,达到93%。

排查后发现主要是有个日志文件占用了大部分空间:

   根目录的总大小是30G,但是这个日志文件就占用了23G左右。这个日志文件是记录的服务器自身硬件的采集信息,因为没有做日志文件切割,所以从服务器运行以来一直保存着这个日志信息(没有删除过),所以时间长了就会导致日志文件占用磁盘空间。

优化思路是:采用系统的日志管理工具(Logrotate)对日志文件进行管理。

PART 01
Logrotate是什么

    logrotate是Linux/Unix系统最核心的日志自动管理工具,专门负责相关日志(比如系统、应用日志等)的轮转、压缩、删除、备份,主要目的是可以防止相关日志记录的文件无限制增长导致磁盘空间占满。

PART 02
Logrotate程序的相关路径

1.命令路径:

    可以使用命令which logrotate查看Logrotate执行程序所在路径,通常Linux系统都自带安装该程序工具,执行命令一般是在/usr/sbin/logrotate。

2.核心配置文件:/etc/logrotate.conf主配置文件(总规则、全局默认值)

/etc/logrotate.d/子配置目录(每个服务自己的独立规则,如nginx、syslog以及本文的案例sysmonitor.log)

3.关键知识点:

/etc/logrotate.d/里的配置优先级高于/etc/logrotate.conf 主配置。

 Linux系统默认是把Logrotate工具纳入在crond的每天定时任务执行,在/etc/cron.daily目录下可以看到有logrote的执行脚本:

PART 03
Logrotate的处理流程

   操作系统每天的定时任务会自动启动Logrotate程序,先后读取/etc/logrotate.conf和/etc/logrotate.d/目录下的子配置文件,根据配置对相应日志进行切割、删除、压缩等处理操作。

比如本文案例Logrotate关于sysmonitor.log的配置在/etc/logrotate.d/目录下:

会每天执行对sysmonitor.log文件进行切割处理。

PART 04
Logrotate的基础使用方法

1.创建关于/var/log/sysmonitor.log日志文件的logrotate配置:

字段说明:

  • daily    # 每天轮转

  • rotate 7   # 保留7天的日志

  • compress     # 压缩旧日志

  • missingok    # 日志文件不存在时不报错

  • notifempty     # 日志为空时不轮转 

  • create 644 root root   # 轮转后创建新文件并设置权限 

2.测试logrotate日志轮转配置是否正确

logrotate -d /etc/logrotate.d/sysmonitor 

注意:-d选项调试模式,不会真的切割日志,只用来检查配置是否正确,也是排查配置是否有冲突的重要方法。

强制执行logroate切割动作可以使用-f选项

logrotate -f /etc/logrotate.d/sysmonitor(通常不需要,因为系统每天会定时执行)

3.配置后的效果

  配置完成后,系统会每天通过执行logroate工具对/var/log/sysmonitor.log文件进行切割、压缩、备份等操作,如下图,每天会按配置值进行生成日志文件,过期的数据会被删除掉。

最终达到了控制日志文件的生成,避免日志文件占用过多磁盘空间甚至占满带来其他问题。

PART 05
Logrotate常用关键词
  • daily/weekly/monthly:日志文件轮转频率

  • rotate N:日志文件保留分数

  • compress:启用文件压缩

  • size 100M:超过对应值大小就轮转(和时间二选一)

  • postrotate/endscript:对日志文件轮转后执行命令

    PART 06
    总结

1.配置Logrotate后,一定使用“-d”选项对配置进行语法、文件配置冲突等检查。

2.一个日志只能有一个Logroate配置,如果有重复配置文件会影响日志文件的处理,造成异常。

最新文章

随机文章