用 cron 做定时任务:每天自动跑脚本的新手做法

举报
yd_291459017 发表于 2026/11/07 08:46:22 2026/11/07
【摘要】 有些小事每天都要做一次,比如凌晨清理临时文件、定时备份、定时拉取更新,靠人记着去敲命令总有忘的时候。cron 解决的正是这个问题:你在系统里写一行规则,告诉它什么时候跑、跑什么,到了时间它自己执行,你就不用再守着终端等点了。先理解一个关系:cron 不是脚本本身,而是管时间的调度员。真正干活的还是你原来那个脚本,cron 只负责按你定的时间把它叫起来。脚本写好一次、测通一次,交给 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 确认,再等一次执行验证。这样下次需要每天重复的小事,你就不用再靠闹钟提醒自己,只需要确认它已经自己跑过了。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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