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、乱码、全角空格,即可确认文件被污染。

相关推荐
GeW11 小时前
不只靠技术:RHCE考试的5个隐藏得分点
linux
Java后端的Ai之路11 小时前
14、Python - 责任链模式
服务器·开发语言·人工智能·python·责任链模式
老当益壮梁奶奶11 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
祖力5512 小时前
进程间通信(IPC机制):消息队列与共享内存
linux·消息队列·共享内存·通信·进程间通信
从入门到退休12 小时前
企业远程控制选型:向日葵SDK vs RustDesk自建,谁是更务实的选择?
运维·服务器·网络·远程工作·远程控制
Learn-Share_HY12 小时前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
小王C语言14 小时前
Windows 无法使用 ssh 连接虚拟机(ubuntu),网络没问题的情况下
运维·ssh
java_logo14 小时前
Docker 部署 MinIO:轻松搭建 S3 兼容对象存储平台
运维·docker·容器·对象存储·minio·轩辕镜像·minio部署
祖力5514 小时前
进程间通信(IPC机制):信号
linux·运维·服务器·进程·进程间通信·多任务·ipc
GKxx14 小时前
在 HarmonyOS 上给 QEMU 搭一个最小 aarch64 Linux guest(内核 + busybox initramfs)
linux·华为·qemu·harmonyos·鸿蒙·鸿蒙pc