Linux crontab 定时任务入门:让脚本自己准点跑起来

举报
yd_271806766 发表于 2026/10/27 06:54:10 2026/10/27
【摘要】 服务器上总有些事要重复做:每天备份日志、每小时清理临时文件、每周拉取一次数据。手动执行既麻烦又容易忘,Linux 自带的 cron 就是干这个的。 一、基本用法输入 crontab -e 编辑当前用户的定时任务,crontab -l 查看,crontab -r 删除全部(慎用)。每一行是一条任务:分 时 日 月 周 命令五个字段依次是分钟(0-59)、小时(0-23)、日(1-31)、月(1...

服务器上总有些事要重复做:每天备份日志、每小时清理临时文件、每周拉取一次数据。手动执行既麻烦又容易忘,Linux 自带的 cron 就是干这个的。

一、基本用法

输入 crontab -e 编辑当前用户的定时任务,crontab -l 查看,crontab -r 删除全部(慎用)。每一行是一条任务:

分 时 日 月 周 命令

五个字段依次是分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、星期(0-7,0 和 7 都是周日)。* 表示任意,*/5 表示每隔 5,1,15 表示列举,1-5 表示范围。

二、几个常见例子

  • 每天凌晨 2 点备份:0 2 * * * /home/user/backup.sh
  • 每 10 分钟执行一次:*/10 * * * * /home/user/check.sh
  • 工作日早上 9 点半:30 9 * * 1-5 /home/user/report.sh
  • 每月 1 号零点:0 0 1 * * /home/user/monthly.sh

三、新手最容易踩的坑

  1. 环境变量不同。cron 的 PATH 很精简,在终端能跑的命令在 cron 里可能找不到。解决办法:脚本里写绝对路径,或在 crontab 顶部加一行 PATH=/usr/local/bin:/usr/bin:/bin。
  2. 没有输出,不知道成没成功。建议把输出重定向到日志:0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1。出错时翻日志一目了然。
  3. 脚本没有执行权限。记得 chmod +x backup.sh,脚本第一行写 #!/bin/bash。
  4. 百分号要转义。crontab 里 % 有特殊含义,比如 date +%F 要写成 date +\%F。
  5. 时区。cron 按系统时区执行,用 timedatectl 确认服务器时区,避免“凌晨 2 点”其实是别人的下午。

四、怎么调试

先在命令行手动运行脚本确认没问题;再临时改成每分钟执行 * * * * *,看日志有没有输出;确认无误后改回正式时间。也可以查看系统日志 grep CRON /var/log/syslog(CentOS 系在 /var/log/cron)确认任务是否被触发。

五、小结

cron 语法只有五个时间字段加一条命令,学一次受用很久。记住三件事:用绝对路径、重定向日志、先手动测试。把重复的运维动作交给 cron,你就能把时间花在更有价值的事情上。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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