Linux 定时任务不难:用 cron 把重复活交给服务器自己
服务器上总有一些活天天重复:备份数据、清理日志、巡检服务状态。靠人记着做,迟早有漏的那一天。Linux 自带的 cron 就是为这种场景准备的:把规则写一次,剩下的交给系统按时执行。
cron 的规则只有一行
每条任务由五个时间字段加一条命令组成,顺序是:分、时、日、月、周。比如 0 3 * * * 表示每天凌晨 3 点整执行;星号代表「每一个」。想不起来字段顺序时,我一般先写一个几分钟后触发的测试时间,确认跑通了再改成正式周期。
三个最常用的例子
一是每天备份:0 3 * * * tar -czf /backup/data-$(date +\%F).tar.gz /srv/data,注意在 crontab 里百分号要转义。二是定期清日志:0 4 * * 1 find /var/log/myapp -name "*.log" -mtime +14 -delete,每周一凌晨删掉两周前的日志。三是存活巡检:*/5 * * * * systemctl is-active --quiet myapp || systemctl restart myapp,每五分钟检查一次服务,挂了就自动拉起。
编辑与查看
用 crontab -e 编辑当前用户的任务表,crontab -l 查看现有任务。保存后立即生效,不需要重启任何服务。系统级的任务还可以直接把脚本放进 /etc/cron.daily/ 目录,省去写时间字段。
新手最容易踩的三个坑
第一,cron 的环境和你登录终端不一样,PATH 很短,命令尽量写绝对路径。第二,脚本里不要依赖「当前目录」,要用到的文件都写全路径,并确认脚本有执行权限。第三,默认情况下任务输出会被投递到本机邮箱,基本没人看;建议统一重定向到日志:>> /var/log/myjob.log 2>&1,出了问题能回溯。
我的小习惯
任何命令先在终端里手动跑通一遍,再写进 crontab;新任务先设成两分钟后执行验证一次,确认日志和结果都对,再改回正式周期。多花这两分钟,能省掉第二天早上发现「昨晚备份根本没跑」的麻烦。把重复活交给 cron,人只负责定期看一眼日志,这才是服务器该有的样子。
- 点赞
- 收藏
- 关注作者
评论(0)