用 cron 做定时任务:每天自动跑脚本的新手做法
有些小事每天都要做一次,比如凌晨清理临时文件、定时备份、定时拉取更新,靠人记着去敲命令总有忘的时候。cron 解决的正是这个问题:你在系统里写一行规则,告诉它什么时候跑、跑什么,到了时间它自己执行,你就不用再守着终端等点了。
先理解一个关系:cron 不是脚本本身,而是管时间的调度员。真正干活的还是你原来那个脚本,cron 只负责按你定的时间把它叫起来。脚本写好一次、测通一次,交给 cron 之后每天重复的都是同一份经过验证的动作,不会因为手滑多敲一个参数。
上手只要三步。第一步,先把要定时跑的脚本写好并手动跑一次确认没问题,脚本里用绝对路径,不要用相对路径,也不要依赖当前终端的环境变量。第二步,执行 crontab -e 打开定时表,按“分 时 日 月 周 命令”的顺序写一行,比如 0 3 * * * /home/你/ backup.sh 就是每天凌晨 3 点跑一次备份脚本,五个星号位置分别对应分钟、小时、日期、月份、星期几。第三步,保存退出后用 crontab -l 看一眼规则是不是写进去了,再等一个执行周期,用日志或脚本自己的输出确认它真的跑过一次。
新手最容易踩的坑有三个。第一,cron 跑脚本时的环境跟你手动登录时不一样,PATH 很短,脚本里调用的命令要写全路径,或者在脚本开头自己把 PATH 写完整,否则手动能跑、定时就找不到命令。第二,脚本的输出默认会发邮件给系统用户,久了会堆积,最简单的办法是在命令后面把输出重定向到日志文件,比如 >> /var/log/backup.log 2>&1,出问题先看日志。第三,不要一上来就写每分钟跑一次的规则,先用一个很近的时间点试一次,确认跑通了再改成每天一次,不然一个本身就有问题的脚本会在后台反复出错刷日志。
养成一个习惯就够了:一个定时任务一行规则,规则后面写清注释说明它是干什么的,改完先看 crontab -l 确认,再等一次执行验证。这样下次需要每天重复的小事,你就不用再靠闹钟提醒自己,只需要确认它已经自己跑过了。
- 点赞
- 收藏
- 关注作者
评论(0)