logrotate -d 是安全测试配置语法的命令,仅模拟执行;默认读取 /etc/logrotate.conf 及其 include 的 /etc/logrotate.d/ 下文件;调试时需关注 error、rotating pattern 等输出,常见问题包括路径不存在、脚本命令不可用、权限错误或变量未启用选项。

用 logrotate -d 命令可以测试配置文件语法是否正确,它只模拟执行过程、不改动任何文件,是最安全的验证方式。
确认配置路径再调试
logrotate 默认读取主配置 /etc/logrotate.conf,该文件通常包含 include /etc/logrotate.d,所以所有 /etc/logrotate.d/ 下的文件也会被加载。测试时建议:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 检查主配置是否启用 include:运行
grep "include.*logrotate.d" /etc/logrotate.conf - 若只想测某个服务(如 Nginx),直接指定其配置文件:
sudo logrotate -d /etc/logrotate.d/nginx - 若测全部规则,用主配置路径:
sudo logrotate -d /etc/logrotate.conf
看懂调试输出的关键信息
运行 -d 后,终端会逐行打印 logrotate 的判断逻辑。重点关注:
- error: 开头的行——说明语法错误或路径不可读,需修正
- rotating pattern: 行——确认匹配的日志路径和轮转条件(如 daily、size)是否符合预期
- renaming 或 compressing 等动作描述——表示该规则会被触发,但不会真实执行
- 没有报错且列出目标日志路径,基本说明语法和路径都正常
常见导致调试失败的原因
即使配置写对了,-d 也可能报错,多因环境问题:
- 日志文件路径不存在,且没加
missingok—— 加上即可避免中断 - 配置中用了
postrotate脚本,但脚本里调用的命令(如nginx、kill)不在 PATH 中,或权限不足 —— 可临时注释脚本块再试 -
/etc/logrotate.d/下某配置文件权限不对(比如不是 0644),logrotate 会跳过并警告 —— 用ls -l /etc/logrotate.d/检查 - 配置中用了变量(如
$dateext)但未启用对应选项(如漏写dateext)—— 会导致解析失败










