怎么手动执行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 条件等。

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

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

Vidyo.ai
Vidyo.ai

Vidyo.ai是一款将长视频自动剪成社交短视频的 AI 内容再利用工具。

下载

验证要点:

  • 在 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

相关专题

更多
Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

Tailwind CSS 常用类名怎么记
Tailwind CSS 常用类名怎么记

Tailwind CSS 类名很多,先按布局、间距、文字、颜色和状态分组记忆,再通过官方文档检索具体写法。本专题结合类名排序、动态拼接失效、自定义实用类等问题,帮助你建立常用类名的速查方法。

2026.11.03

0

12

码上飞入口地址合集
码上飞入口地址合集

本专题汇总了码上飞(CodeFlying)的官方入口地址合集,涵盖官网主站及网页版在线使用入口,支持注册登录后直接在线体验零代码AI应用生成。同时整理了APP端下载渠道与小程序入口,助你快速访问平台,通过自然语言描述需求即可生成应用、小程序或网站。

2026.11.03

0

10

Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

20

14

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

2026.11.02

20

17

Uvicorn安装配置教程
Uvicorn安装配置教程

本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

2026.11.02

20

17

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

120

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

100

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

300

10

热门下载

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

精品课程

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

共28课时 | 57.2万人学习