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 已调试、保留期和磁盘告警已设置。
- 点赞
- 收藏
- 关注作者
评论(0)