欢迎您访问新疆栾骏商贸有限公司,公司主营电子五金轴承产品批发业务!
全国咨询热线: 400-8878-609

新闻资讯

技术教程

Linux怎么配置Logrotate日志轮转_Linux系统日志自动切割与清理【方法】

作者:穿越時空2026-01-11 00:00:00
需配置logrotate服务实现日志周期性切割、压缩与清理:一、修改/etc/logrotate.conf设全局策略;二、在/etc/logrotate.d/下为特定服务建独立配置;三、用size参数按大小触发轮转;四、用olddir归档旧日志并保持权限;五、用-d和-f调试验证。

如果您希望Linux系统自动对日志文件进行周期性切割、压缩与清理,避免磁盘空间被无限制占用,则需正确配置logrotate服务。以下是实现该目标的多种可行方法:

一、修改全局主配置文件 /etc/logrotate.conf

该文件定义系统级默认轮转策略,适用于所有未单独配置的日志路径。修改此处可统一影响大部分系统日志行为。

1、使用文本编辑器打开主配置文件:sudo vi /etc/logrotate.conf

2、确认或添加以下关键参数(示例为推荐生产环境设置):weekly rotate 4 compress delaycompress missingok notifempty dateext create 0644 root root

3、确保包含子配置目录语句未被注释:include /etc/logrotate.d

4、保存并退出编辑器。

二、为特定服务创建独立配置文件

在/etc/logrotate.d/目录下为Nginx、MySQL等服务建立专属规则,可实现精细化控制,且不干扰全局策略。

1、创建新配置文件:sudo vi /etc/logrotate.d/myapp

2、写入如下结构化配置(以/var/log/myapp/app.log为例):/var/log/myapp/app.log { daily rotate 14 compress delaycompress missingok notifempty create 0640 myapp myapp copytruncate }

3、检查语法是否合法:sudo logrotate -d /etc/logrotate.d/myapp

4、验证轮转是否立即生效:sudo logrotate -f /etc/logrotate.d/myapp

三、按文件大小而非时间触发轮转

当某服务日志写入频率不可预测时,仅依赖时间周期可能导致单个日志过大;此时应启用size参数,使logrotate在达到阈值后立即执行切割。

1、编辑对应配置文件(如/etc/logrotate.d/nginx):sudo vi /etc/logrotate.d/nginx

2、将原有daily或weekly行替换为:size +50M

3、保留其他必要参数,例如:rotate 7 compress missingok notifempty create 0640 nginx adm

4、强制运行一次测试:sudo logrotate -fv /etc/logrotate.d/nginx

四、启用日志归档至指定目录并保留原始权限

通过olddir指令可将旧日志统一移入专用归档路径,便于集中备份或审计;同时配合create与copytruncate确保新日志文件持续可用且权限一致。

1、新建归档目录:sudo mkdir -p /var/log/archive/myapp

2、调整配置中路径部分:/var/log/myapp/app.log { daily rotate 30 compress delaycompress missingok notifempty olddir /var/log/archive/myapp create 0640 myapp myapp copytruncate }

3、修正归档目录权限:sudo chown -R myapp:myapp /var/log/archive/myapp

4、手动触发验证:sudo logrotate -f /etc/logrotate.d/myapp

五、调试与强制执行轮转操作

配置完成后,必须验证其有效性,避免因语法错误或路径权限问题导致轮转失败;调试模式可模拟执行全过程而不实际改动文件。

1、以debug模式检查全部配置:sudo logrotate -d /etc/logrotate.conf

2、仅调试某个子配置:sudo logrotate -d /etc/logrotate.d/myapp

3、忽略时间条件强制执行一次轮转:sudo logrotate -f /etc/logrotate.conf

4、查看轮转状态记录文件确认历史:sudo cat /var/lib/logrotate/logrotate.status