Linux 定时任务入门:crontab 五个星号一次讲清

举报
yd_299492234 发表于 2026/11/10 08:29:05 2026/11/10
【摘要】 服务器上的很多活不需要人守着:每天凌晨备份一次数据库、每小时清理一次过期日志、每周一早上发一份磁盘用量报告。这些活交给 Linux 自带的定时任务工具 crontab 就行,学会五个星号的写法,十分钟就能上手。 crontab 是什么crontab 是 Linux 系统里管定时任务的工具。每个用户都有一份自己的定时任务表,系统里还有一个叫 cron 的后台服务,每分钟醒来一次,对照这张表,看...

服务器上的很多活不需要人守着:每天凌晨备份一次数据库、每小时清理一次过期日志、每周一早上发一份磁盘用量报告。这些活交给 Linux 自带的定时任务工具 crontab 就行,学会五个星号的写法,十分钟就能上手。

crontab 是什么

crontab 是 Linux 系统里管定时任务的工具。每个用户都有一份自己的定时任务表,系统里还有一个叫 cron 的后台服务,每分钟醒来一次,对照这张表,看有没有到时间该跑的任务,有就执行。

不用装任何软件,也不用写守护进程,一行配置就是一个定时任务。

五个星号怎么读

打开任务表用 crontab -e,每一行长这样:

30 2 * * * /home/yang/backup.sh

前面五个字段就是时间,从左到右依次是:分、时、日、月、星期。星号的意思是“每”——这一位不限制。上面这行读作:每天凌晨 2 点 30 分,跑一次备份脚本。

几个常见写法:

0 * * * * /home/yang/clean.sh      # 每小时整点跑一次
0 9 * * 1 /home/yang/report.sh     # 每周一早上 9 点跑一次
0 0 1 * * /home/yang/monthly.sh    # 每月 1 号零点跑一次
*/10 * * * * /home/yang/check.sh   # 每 10 分钟跑一次

*/10 里的斜杠表示“每隔”,是写高频任务最常用的写法。

新手最容易踩的三个坑

第一,环境变量不一样。 定时任务跑起来的时候,环境变量比你在终端里少得多,PATH 里可能没有你常用的命令路径。所以脚本里尽量写命令的完整路径,或者在脚本开头自己把需要的路径加上。定时任务里跑不起来、手动跑却好好的,十有八九是这个原因。

第二,输出没地方去。 定时任务没有终端,脚本打印的东西不会显示在你眼前。正确做法是把输出写进日志文件:

30 2 * * * /home/yang/backup.sh >> /home/yang/backup.log 2>&1

这样任务跑没跑、跑错了什么,翻日志就知道。出了问题先看日志,别先猜。

第三,时间写错一位。 五个字段的顺序是分、时、日、月、星期,新手最常把“时”和“分”写反。写完之后先用一个一两分钟后就到的时间试跑一次,确认日志里有记录,再改回真正的执行时间。

三条实用建议

先从简单的任务开始练手,比如每小时往日志里写一行时间,确认机制通了再上真正的备份脚本。重要的任务执行前先手动跑一遍脚本,确认脚本本身没问题,再交给定时任务。最后,给每个定时任务配上日志文件,定期看一眼,别让失败的任务悄悄空跑几个月。

定时任务这件事,难的不是配置本身,而是养成“跑完要验证”的习惯。五个星号写对了,剩下的就是让机器替你把重复的活干掉。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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