麒麟os日志持续增长需配置logrotate:一、修改/etc/logrotate.conf统一管理;二、为特定日志创建独立配置;三、按大小(如size 100m)触发轮转;四、添加copytruncate保障服务不中断;五、手动验证与状态核查。

如果您在麒麟OS上发现日志文件持续增长并占用大量磁盘空间,则可能是由于缺乏自动轮转机制。以下是配置日志轮转的多种可行方法:
一、使用logrotate主配置文件统一管理
该方法通过修改全局配置文件,使所有符合规则的日志路径按统一策略轮转,适用于系统级标准化管理。
1、使用文本编辑器打开主配置文件:sudo vim /etc/logrotate.conf
2、在文件末尾添加或确认存在以下基础参数:weekly rotate 4 compress dateext missingok
3、确保包含外部配置目录的加载指令未被注释:include /etc/logrotate.d
4、保存退出后,手动验证配置语法是否正确:sudo logrotate -d /etc/logrotate.conf
二、为特定日志创建独立轮转配置
该方法针对单个应用或服务日志单独定义策略,避免影响其他日志行为,适合运维人员精细化控制。
1、进入配置目录并新建专属文件:sudo vim /etc/logrotate.d/myapp
2、在文件中写入以下内容(以/var/log/myapp.log为例):/var/log/myapp.log { daily rotate 7 compress missingok notifempty create 644 root root dateext }
3、设置文件权限防止非授权修改:sudo chmod 644 /etc/logrotate.d/myapp
4、立即执行一次轮转测试:sudo logrotate -f /etc/logrotate.d/myapp
三、基于文件大小触发轮转
该方法不依赖时间周期,仅当日志体积超过设定阈值时启动轮转,适用于日志写入频率不稳定的场景。
1、编辑对应服务的logrotate配置文件,例如:sudo vim /etc/logrotate.d/nginx
2、将原有时间策略替换为大小控制参数:size 100M
3、保留必要的辅助指令,如:rotate 5 compress copytruncate
4、验证当前日志大小是否满足触发条件:ls -lh /var/log/nginx/access.log
5、强制运行轮转并观察输出:sudo logrotate -v /etc/logrotate.d/nginx
四、启用copytruncate保障服务连续性
该方法在轮转过程中不中断正在写入日志的应用进程,特别适用于无法停机重启的关键服务。
1、确认目标日志由持续运行的服务生成,例如rsyslog或自定义守护进程。
2、在其logrotate配置块中显式添加该指令:copytruncate
3、确保配置中同时存在create指令以重建空白日志文件。
4、执行调试模式检查是否识别该选项:sudo logrotate -d /etc/logrotate.d/rsyslog
5、观察调试输出中是否出现Truncating original log file after copying提示。
五、手动触发与状态核查
该方法用于即时验证配置有效性、排查轮转失败原因或响应突发磁盘告警。
1、查看logrotate最近执行记录:sudo cat /var/lib/logrotate.status
2、定位某日志上次轮转时间:grep "myapp.log" /var/lib/logrotate.status
3、强制执行指定配置且显示全过程:sudo logrotate -v -f /etc/logrotate.d/myapp
4、检查轮转后文件命名是否含日期后缀:ls -lt /var/log/myapp.log-*
5、确认原日志文件是否清空且可继续写入:sudo tail -n 1 /var/log/myapp.log










