会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 Linux 日志轮转机制 logrotate 详解(超详细版)!

Linux 日志轮转机制 logrotate 详解(超详细版)

时间:2025-11-05 04:12:40 来源:益强数据堂 作者:域名 阅读:228次

日志是志轮转机制排查故障的利剑,但是详解细版日志文件不断增长,如果不及时管理,超详不仅占用大量磁盘空间,志轮转机制还可能导致系统异常甚至宕机。详解细版

本篇系统讲解 Linux 下最常用的超详日志轮转工具——logrotate。

一、志轮转机制什么是详解细版日志轮转?

日志轮转,简单来说,超详就是志轮转机制:

定期对日志文件进行归档、压缩、详解细版备份,超详防止日志无限增长,志轮转机制占满服务器磁盘。详解细版

日志轮转通常包含以下操作:

将旧日志文件重命名归档(比如加上时间戳)压缩历史日志以节省空间限制保留日志数量,超详超期日志自动删除可在轮转后执行命令,如通知程序重新生成日志

为什么需要日志轮转?

避免磁盘空间爆满加快日志检索速度便于归档和审计

一句话总结:日志轮转,是服务器自我保护的一种能力。

二、企商汇什么是 logrotate?

logrotate 是 Linux/Unix 系统中专门用于管理日志轮转的工具。

它具有以下特点:

支持定时自动轮转可针对不同日志文件制定不同策略支持压缩、删除、邮件发送等操作可结合自定义脚本执行复杂操作

大部分 Linux 发行版(如 CentOS、Ubuntu、Rocky Linux)都预装了 logrotate。系统日志、Nginx、MySQL、Tomcat 等日志轮转大多基于它实现。

三、logrotate 安装与基本使用

检查是否安装:在终端执行

复制logrotate --version1.

如果未安装,根据你的系统安装:

RHEL / CentOS / Rocky Linux: 复制dnf install -y logrotate1. Ubuntu / Debian: 复制sudo apt install -y logrotate1.

四、logrotate 配置文件详解

logrotate 配置非常灵活,分为两类:

1. 全局配置文件

/etc/logrotate.conf文件设置服务器的统一默认规则,适用于大多数普通日志。

推荐的全局配置:

复制# 全局轮转周期 weekly # 每周轮转一次 rotate 4 # 保留最近4次的归档 create # 每次轮转后新建日志 compress # 归档文件 gzip 压缩 delaycompress # 延迟一轮再压缩 missingok # 日志丢失不报错 notifempty # 日志为空不轮转 dateext # 使用日期作为后缀,如 .log-20250426.gz # 包含单独服务配置 include /etc/logrotate.d1.2.3.4.5.6.7.8.9.10.11.12. 2. 子配置文件

子配置文件/etc/logrotate.d/*针对每个应用(如 nginx、b2b供应网mysql、docker)单独定制。

Nginx配置示例:/etc/logrotate.d/nginx:

复制/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 nginx adm sharedscripts postrotate [ -s /run/nginx.pid ] && kill -USR1 $(cat /run/nginx.pid) endscript }1.2.3.4.5.6.7.8.9.10.11.12.13.

MySQL配置示例:

复制/var/log/mysql/*.log { weekly rotate 8 missingok compress notifempty create 640 mysql mysql sharedscripts postrotate /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs endscript }1.2.3.4.5.6.7.8.9.10.11.12.

配置参数详解:

指令

说明

daily

/weekly/monthly

每天/每周/每月轮转

rotate N

保留 N 个轮转文件

compress

使用 gzip 压缩

delaycompress

延迟到下次轮转才压缩

missingok

如果日志不存在,不报错

notifempty

如果日志为空,不轮转

create MODE OWNER GROUP

创建新日志文件并设置权限

postrotate endscript

轮转完成后执行脚本,如重载服务

【注意】子配置文件默认会继承全局配置,但可以覆盖!

五、logrotate 工作原理

logrotate 通过定时任务(cron)每天自动执行,流程如下:

(1) 定时触发:由 /etc/cron.daily/logrotate 脚本调度

(2) 加载配置:读取 /etc/logrotate.conf 和 /etc/logrotate.d/

*

(3) 检查日志文件:

是否满足轮转条件(时间、大小)文件是否存在、是否为空

(4) 执行轮转动作:

重命名旧日志(加时间后缀)压缩归档创建新的日志文件删除超期的旧日志

(5) 执行钩子脚本(postrotate)

如果一切正常,轮转过程对应用程序是透明的。

六、手动测试与故障排查

有时候需要手动测试 logrotate 是否配置正确,方法如下:

1. 手动测试单个配置文件 复制sudo logrotate -f /etc/logrotate.d/nginx1. 2. 带详细日志模式 复制sudo logrotate -vf /etc/logrotate.d/nginx1. -f 强制轮转-v 显示详细执行过程

常见错误排查:

配置路径错误权限不足,无法新建日志文件postrotate脚本出错,导致服务无法重新打开日志

查看系统日志 /var/log/messages 可以帮助进一步排查。网站模板

(责任编辑:IT科技)

推荐内容
  • 解决戴尔电脑登录界面错误的方法(排查戴尔电脑登录界面错误的常见问题及解决方案)
  • 用Python分析元旦旅游热门城市
  • 我从 17w star 的 Vuejs 中学到了什么?
  • 如何使用 Python 绘制 COVID-19 的全球扩散图
  • 电脑迷你世界注册教程(轻松注册,畅玩电脑迷你世界)
  • 2020征文-TV「3.3 文本输入框」鸿蒙HarmonyOSTextField组件介绍和应用