怎么手动执行logrotate测试脚本是否可用

云磊同学_8126

云磊同学_8126

2026-09-08

184人浏览

原创

logrotate -d 仅做配置解析和预演,不执行实际轮转;需加 -f 指定配置文件路径才能强制执行,-v 查看详细动作,postrotate 需手动验证是否成功运行。

怎么手动执行logrotate测试脚本是否可用

logrotate -d 能看到配置是否被识别,但不执行轮转

用 logrotate -d 只是做 dry-run:它会读取配置、解析通配符、检查文件存在性、打印将要执行的动作,但跳过所有实际的 rename / compress / rotate 操作。这是最安全的第一步,能快速暴露语法错误、路径不存在、权限不足等问题。

常见错误现象包括:error: error accessing /var/log/myapp/*.log: No such file or directory(日志路径写错或目录为空),或 error: skipping "/var/log/myapp/app.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root")(父目录权限太松)。

  • 务必加 -f(force)才强制触发轮转,否则即使满足时间/大小条件也不会真跑
  • -d 不校验 postrotate 脚本语法是否合法,只看能否找到该脚本文件
  • 如果配置里用了 include,-d 会递归加载并报告所有包含的文件——这是排查“为什么我的规则没生效”的关键线索

logrotate -f 强制执行时必须指定配置文件路径

直接运行 logrotate -f 会报错:error: no config file specified。logrotate 不会自动 fallback 到 /etc/logrotate.conf,除非你显式传入。

正确做法是:

  • 测试全局配置:logrotate -f /etc/logrotate.conf
  • 测试单个应用配置(推荐):logrotate -f /etc/logrotate.d/myapp(注意:这个文件必须是独立有效的 logrotate 配置片段,不能依赖 include 外部定义的 shared 设置)
  • 加 -v 查看详细动作:logrotate -fv /etc/logrotate.d/myapp,你会看到类似 rotating pattern: /var/log/myapp/app.log forced from command line (7 rotations) 的输出

注意:-f 不绕过 daily/weekly 等时间判断——它只是忽略“上次轮转时间是否已到”,但仍会检查文件是否存在、是否可读写、是否满足 size 条件等。

Alkaid.art
Alkaid.art

一款面向Photoshop创作者的AIGC绘画插件,将AI图像生成能力融入图片编辑工作流,帮助设计师完成视觉创作。

下载

手动触发后如何验证 postrotate 是否真的运行了

很多人以为 logrotate -fv 输出了 running postrotate script 就万事大吉,其实不然。postrotate 脚本在子 shell 中执行,它的 exit code 不影响主流程,失败也不会中断轮转。

验证要点:

  • 在 postrotate 脚本开头加日志:echo "$(date): postrotate started" >> /var/log/myapp/rotate.log
  • 确保脚本末尾有 exit 0(否则某些版本 logrotate 会认为脚本失败并跳过后续操作)
  • 检查信号是否发给正确进程:postrotate 里用 kill -USR1 $(cat /var/run/myapp.pid 2>/dev/null) 前,先确认 /var/run/myapp.pid 存在且内容是数字 PID
  • 如果用 systemctl reload myapp,注意非 root 用户运行的 logrotate 可能无权执行该命令——建议改用 systemctl --user reload myapp 或提前配置 sudo 免密

测试环境与生产环境权限/SELinux 差异常被忽略

在本地 VM 或容器里测试通过的配置,上线后可能卡在 error: skipping ... because parent directory has insecure permissions 或 error: unable to open /var/log/myapp/app.log for compression。

根本原因通常是:

  • 测试时用 root 手动跑,而 cron 里的 logrotate 是由 logrotate 组或特定用户启动,对目标目录缺少 r/w/x 权限
  • SELinux 启用时,logrotate 进程默认域不允许写某些上下文的文件(如 container_file_t),需用 audit2why 查日志,再用 semanage fcontext 修复
  • 使用 copytruncate 时,若应用本身以 O_APPEND 方式打开日志,截断后可能继续往旧 inode 写——这不会报错,但导致日志“丢失”,必须配合应用重开文件句柄(即靠 postrotate reload)

真正可靠的测试,得在跟生产一致的用户身份、SELinux 状态、文件上下文环境下跑一次 logrotate -fv,并立刻检查目标日志文件、归档文件、postrotate 日志三者的状态。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

20

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

0

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

0

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

20

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

20

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

220

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

140

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

120

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux 教程
Linux 教程

共28课时 | 56.9万人学习