crontab 入门:让 Linux 自动为你打工

举报
yd_283574177 发表于 2026/11/03 20:14:09 2026/11/03
【摘要】 每天凌晨备份数据库、每小时清理一次临时文件、每周一早上生成报表——这些重复性工作,如果每次都要手动执行,既枯燥又容易遗忘。Linux 下的 crontab 就是为解决这类需求而生的定时任务工具,学会它,就等于给自己请了一个 7×24 小时不休息的"数字助理"。 crontab 是什么crontab 是 Linux 系统中用来定期执行任务的服务。它的名字由 cron(定时守护进程)加 tabl...

每天凌晨备份数据库、每小时清理一次临时文件、每周一早上生成报表——这些重复性工作,如果每次都要手动执行,既枯燥又容易遗忘。Linux 下的 crontab 就是为解决这类需求而生的定时任务工具,学会它,就等于给自己请了一个 7×24 小时不休息的"数字助理"。

crontab 是什么

crontab 是 Linux 系统中用来定期执行任务的服务。它的名字由 cron(定时守护进程)加 table(表格)组成,顾名思义,就是一张"定时任务表"。系统中的 cron 守护进程每分钟检查一次这张表,一旦发现有任务到期,就自动执行对应的命令。

和 systemd timer 相比,crontab 更加轻量、语法简单,适合个人用户和小型脚本的定时需求,也是运维入门的必修课。

五个星号:读懂时间表达式

crontab 最核心的是时间表达式,由五个字段组成:

分 时 日 月 周
*  *  *  *  *

各字段取值范围:

  • 分:0–59
  • 时:0–23
  • 日:1–31
  • 月:1–12
  • 周:0–7(0 和 7 都表示周日)

几个常用例子:

# 每天凌晨 2 点 30 分执行备份脚本
30 2 * * * /home/user/backup.sh

# 每小时的第 15 分钟清理临时文件
15 * * * * rm -rf /tmp/cache/*

# 每周一早上 9 点生成周报
0 9 * * 1 /home/user/weekly_report.sh

# 每 5 分钟检查一次服务状态
*/5 * * * * /home/user/check_service.sh

星号 * 表示"每",*/5 表示"每隔 5"。掌握这几个符号,九成以上的定时需求都能覆盖。

三个常用命令

# 编辑当前用户的定时任务表
crontab -e

# 查看当前用户的定时任务表
crontab -l

# 删除当前用户的所有定时任务(慎用)
crontab -r

第一次运行 crontab -e 时,系统会让你选择编辑器,新手建议选 nano,操作更直观。

新手常踩的四个坑

  1. 环境变量缺失:cron 执行时的环境变量和登录 shell 不同,PATH 可能不完整。建议在脚本中使用命令的绝对路径,或在 crontab 文件开头显式设置 PATH。
  2. 相对路径失效:cron 的工作目录一般是用户家目录,脚本中涉及文件读写时请使用绝对路径。
  3. 没有输出日志:任务执行失败却悄无声息。建议把输出重定向到日志文件,方便排查:30 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1。
  4. 忘记给脚本加执行权限:别忘了 chmod +x,否则 cron 会因权限不足而执行失败。

小结

crontab 用"五个星号加一条命令"的极简方式,解决了 Linux 下绝大多数定时任务需求。从今天开始,把那些重复性的手动操作交给 crontab,让机器去做机器擅长的事,你的时间值得花在更有创造力的工作上。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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