Linux配置每天凌晨两点准时切割日志

浅萱同学_9289

浅萱同学_9289

2026-09-17

435人浏览

原创

logrotate默认由anacron或systemd timer调度,执行时间不固定(如02:17、03:05),无法保证凌晨两点准时执行;必须改用root用户的crontab添加“0 2 *”定时任务,并禁用/etc/cron.daily/logrotate,同时配置中仅用daily而非size或hourly。

linux配置每天凌晨两点准时切割日志

logrotate 默认由 /etc/cron.daily/logrotate 触发,但那是系统级 daily 任务,执行时间由发行版 cron 的 anacron 或 systemd timer 控制,**不保证固定在凌晨两点**。要精确到每天 2:00 执行日志切割,必须绕过默认机制,改用自定义 cron 条目。

为什么不能依赖 /etc/cron.daily/logrotate

Debian/Ubuntu 等系统中,/etc/cron.daily/logrotate 实际由 anacron 调度,可能延迟数小时;RHEL/CentOS 8+ 使用 systemd-timerslogrotate.timer),默认触发时间是随机偏移的,防止多机同时冲击服务器。这意味着即使配置了 daily,真实执行时间可能是 02:17、03:05 或更晚——无法满足“凌晨两点准时”这个硬性要求。

手动配置 crontab 强制 2:00 执行 logrotate

直接覆盖默认调度,用 root 用户添加精确定时任务:

  • 运行 sudo crontab -e
  • 添加一行:0 2 * * * /usr/sbin/logrotate /etc/logrotate.conf > /dev/null 2>&1
  • 确保原 /etc/cron.daily/logrotate 不再生效:重命名或注释掉其内容(如改名成 /etc/cron.daily/logrotate.disabled

注意:/usr/sbin/logrotate 路径需确认(可用 which logrotate 查),部分系统是 /usr/bin/logrotate> /dev/null 2>&1 避免邮件堆积,如有告警需求可替换为邮件地址。

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载

logrotate 配置里必须用 daily,不能用 size 或 hourly

即使 cron 是 2:00 触发,logrotate 内部仍需靠规则判断是否该轮转。若配置中写的是 size 100M,它只检查文件大小,忽略时间;而 hourly 会强制每小时检查一次——这与你的“每天一次”目标冲突,且可能因 cron 只跑一次导致漏切。

  • daily 是唯一与“每天凌晨两点”语义对齐的选项
  • 不要混用 hourlyweekly,否则 logrotate 状态文件(/var/lib/logrotate/status)记录的时间戳会错乱,导致某天跳切、某天不切
  • 如果服务日志增长极快,又想兼顾大小和时间,可用 daily + maxsize 100M(注意不是 size):表示“每天至少切一次,但如果当天已超 100M 就提前切”

测试与验证要点

改完 cron 和配置后,别等明天——立刻验证是否真能按预期工作:

  • 手动模拟时间:临时把系统时间设为前一天晚上 23:59,等一分钟看是否触发(date -s "2026-09-07 23:59:00",切记之后 hwclock -w 同步硬件时钟)
  • 用调试模式验证配置语法:logrotate -d /etc/logrotate.d/nginx,确认无 error:
  • 检查状态文件更新:grep nginx /var/lib/logrotate/status,应看到类似 "2026-09-08-02:00:01" 的时间戳(注意:logrotate 写入状态的时间 ≈ cron 执行时刻,非配置里的 daily 字面含义)

最易被忽略的是状态文件的时间精度——logrotate 不记录秒级时间,只存到分钟;如果你在 02:00:03 触发,状态里显示的仍是 02:00:01,但这不影响逻辑。真正要盯住的,是 cron 是否真的在 02:00:00±30s 内启动了进程(ps aux | grep logrotate 配合 date 观察)。

相关文章

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

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

下载

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

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3630

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3153

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2213

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5290

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4962

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2973

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2485

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2699

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习