Debian 服务器定时任务与日志轮转:cron + logrotate 实战

举报
yd_281936295 发表于 2026/10/30 18:10:15 2026/10/30
【摘要】 Debian 服务器上用 cron 做定时巡检、logrotate 做日志轮转的实战笔记:巡检任务写法、轮转配置与周期、压缩保留策略,以及定时任务日志自查方法。

服务器跑久了,最怕巡检没跑、日志失控。这篇记下我这台 Debian 服务器的固定做法:cron 做定时巡检,logrotate 管日志轮转。


一、cron 定时巡检任务怎么写


cron 一行是五个时间字段加命令:分、时、日、月、周。用 crontab -e 编辑,改完用 crontab -l 核对。


每天凌晨 2 点全面巡检,查磁盘、内存、关键服务和失败登录,输出追加到日志:


0 2 * * * /usr/local/bin/health-check.sh >> /var/log/health-check.log 2>&1


轻量探活可每 5 分钟一次,重任务不要设高频:


*/5 * * * * /usr/local/bin/quick-check.sh >> /var/log/quick-check.log 2>&1


注意:cron 环境变量很少,脚本写绝对路径;输出统一重定向到日志,避免触发邮件;关键任务用 flock 加锁,防止重叠执行。


二、logrotate 配置与轮转周期


规则放在 /etc/logrotate.d/,例如 /etc/logrotate.d/myapp:


/var/log/myapp/*.log {

    daily

    rotate 14

    compress

    delaycompress

    missingok

    notifempty

    create 0640 root adm

    sharedscripts

    postrotate

        systemctl reload myapp 2>/dev/null || true

    endscript

}


每天轮转、保留 14 份、压缩旧日志,轮转后让服务重新打开日志,避免还往旧文件句柄写。量大的用 daily,量小的用 weekly。改完用 logrotate -d 调试,确认无误再用 --force 验证。


三、日志压缩与保留策略


compress 压缩旧日志,delaycompress 让最近一份先不压缩,方便排查,下一轮再压。应用日志保留 14 天、巡检日志 30 天,超期直接删除,不无限保留。磁盘用量超 80% 就告警,先查日志是否暴涨,再决定扩容或缩短保留期。


四、定时任务日志自查


先看系统日志里的 CRON 记录,再对照巡检日志的最新时间戳:


grep CRON /var/log/syslog


没跑起来时查:时间字段是否写错、脚本是否有可执行权限、是否用了 cron 环境下不存在的相对路径。自查清单:脚本可执行、输出有固定日志、logrotate 已调试、保留期和磁盘告警已设置。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。