Linux logrotate 日志切割未生效

一、问题现象

服务器系统日志 /var/log/messages、secure、cron 持续膨胀,单日志文件体积达到 8G 以上。

已在 /etc/logrotate.d/syslog 配置每日自动切割规则,但长期未生成带日期后缀的归档日志,日志只会不断追加写入同一个文件,磁盘持续告警。

执行日志轮转命令 logrotate -v /etc/logrotate.d/syslog,直接抛出报错并跳过整套切割规则,自动轮转完全失效。

报错信息

bash 复制代码
error: /etc/logrotate.d/syslog:1 lines must begin with a keyword or a filename (possibly in double quotes)
error: /etc/logrotate.d/syslog:9 lines must begin with a keyword or a filename
error: found error in /var/log/cron
skipping

报错含义:syslog 配置文件第 1 行、第 9 行存在无法识别的非法字符,logrotate 解析配置失败,直接放弃执行该文件内所有日志切割逻辑。

二、核心前置知识

  1. 两套配置优先级
    /etc/logrotate.conf:全局默认规则(兜底配置)
    /etc/logrotate.d/*:独立分片配置,同日志参数会覆盖全局配置
  2. 关键参数区分
    logrotate -d:干跑模拟,仅校验语法,不改动任何日志(排查专用)
    logrotate -v:真实执行轮转,满足周期就归档日志,并非仅检查
    logrotate -vf:强制轮转,无视切割周期,立即执行归档

三、故障根因

配置文件复制粘贴带入不可见污染字符:

  1. Windows 记事本、Word 文档复制内容到 Linux,携带 Windows 特有 CRLF 换行符 ^M;
  2. 复制过程混入全角空格、制表符、隐藏乱码;
    logrotate 语法校验严格,配置行开头不允许存在任何非法前置字符,一旦检测到污染,直接判定配置无效。

四、定位污染字符

执行命令查看文件隐藏特殊符号:

bash 复制代码
cat -A /etc/logrotate.d/syslog

输出内容中出现 ^M、乱码、全角空格,即可确认文件被污染。

相关推荐
运维老郭1 小时前
Ubuntu下编译安装Redis:从0到1可用的完整指南
运维·云原生
爱喝水的鱼丶1 小时前
SAP-ABAP:一次关于“交货日期”的增强需求:从复杂增强到标准功能的回归之旅
运维·开发语言·性能优化·sap·abap·经验交流
运维大师1 小时前
【K8S 运维实战】07-Pod生命周期与故障排查
运维·容器·kubernetes
一叶龙洲1 小时前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
Увидимся вчера1 小时前
绿盟堡垒机自动化任务—自动改密失败
linux·服务器·自动化
OpenAnolis小助手1 小时前
龙蜥社区智算联盟发布《智算集群基础设施运维通用技术要求》(附下载链接)
运维·人工智能·智算运维·龙蜥智算联盟
.柒宇.1 小时前
ELK日志分析系统实战指南:Elasticsearch搭建与入门(8.18.8版本)
运维·elk·elasticsearch·logback·日志系统
●VON2 小时前
鸿蒙 PC Markdown 编辑器命令面板:把桌面高频操作收束到一个入口
服务器·华为·编辑器·harmonyos·鸿蒙
拾光Ծ2 小时前
【Linux网络】网络通信实战:UDP & TCP Socket编程实现Echo Server
linux·网络·网络协议·tcp/ip·udp·线程池