crontab 入门:让 Linux 替你记住那些重复的活儿
每天 9 点跑一次脚本、每小时清一次临时文件、每周日凌晨备份一次数据库——这些重复的活儿,不用你天天守着,交给 crontab 就行。它是 Linux 上最常用的定时任务工具,学会 5 个时间字段,就能把大多数定时需求 cover 掉。
一、crontab 的时间怎么写
一条定时任务由 5 个时间字段加 1 条命令组成,字段之间用空格隔开:
分 时 日 月 周 命令
每个字段的取值范围是:分 0–59,时 0–23,日 1–31,月 1–12,周 0–7(0 和 7 都代表周日)。星号 * 代表“每一个”,比如第一个字段写 *,就是每分钟都跑。
二、几个一看就懂的例子
每天早上 9 点跑备份脚本:0 9 * * * /home/user/backup.sh
每 30 分钟清一次临时目录:*/30 * * * * rm -rf /tmp/cache/*
每周一凌晨 3 点重启服务:0 3 * * 1 systemctl restart myapp
每月 1 号凌晨 4 点打包日志:0 4 1 * * tar -czf /backup/logs.tar.gz /var/log/myapp
三、开始用它:三个命令
编辑自己的定时任务:crontab -e;查看已有任务:crontab -l;删掉全部任务:crontab -r(删之前先备份,小心驶得万年船)。
四、新手最容易踩的三个坑
第一,环境变量。cron 跑任务时用的环境很“干净”,你在终端里能用的 PATH、别名它都认不到,所以命令最好写绝对路径,脚本第一行写好解释器。
第二,百分号。命令里如果有 %,cron 会把它当成换行,得用反斜杠转义,或者干脆把复杂逻辑写进脚本、让 cron 只调脚本。
第三,没有输出就等于没有证据。任务跑没跑、报错没有,全靠日志:把输出重定向到文件,比如追加到 /var/log/backup.log,出问题时才有据可查。
五、写在最后
定时任务的意义不是“偷懒”,而是把确定性的事交给机器,把人的注意力留给不确定的事。从今天起,把你每周重复做的一件小事写进 crontab——先从一条开始,跑起来,再慢慢加。机器记得住,你就不用记了。
- 点赞
- 收藏
- 关注作者
评论(0)