欢迎光临南昌笑劳网络科技有限公司,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 76543 55
南昌笑劳网络科技有限公司
最新资讯News
南昌笑劳网络科技有限公司

Linux定时任务进阶教程_Crontab与at任务调度实例

作者:冷炫風刃 | 点击: | 来源:冷炫風刃
0801
2026
Linux定时任务靠crontab(周期)和at(一次性),需掌握时间格式逻辑、环境差异及陷阱:crontab五字段为分时日月周,日与周须同时满足;脚本执行需用绝对路径或设PATH;at需atd服务运行且注意shell兼容性;务必记录日志并检查系统日志。...
Linux定时任务靠crontab(周期)和at(一次性),需掌握时间格式逻辑、环境差异及陷阱:crontab五字段为分时日月周,日与周须同时满足;脚本执行需用绝对路径或设PATH;at需atd服务运行且注意shell兼容性;务必记录日志并检查系统日志。

Linux 中的定时任务调度主要靠 crontab(周期性执行)和 at(一次性执行)实现。掌握它们的关键不是死记语法,而是理解时间格式逻辑、环境差异和常见陷阱。

crontab 时间字段怎么填才不踩坑

crontab 的 5 个时间字段顺序是:分 时 日 月 周,容易把“日”和“周”混淆。注意:日(1–31)和周(0–7,0 和 7 都代表周日)**同时满足才会触发**,不是“或”的关系。

  • 想每月 1 号凌晨 2 点运行: 0 2 1 * *
  • 想每周一早上 9 点运行: 0 9 * * 1(不是 0,因为 0 是周日)
  • 想每 15 分钟执行一次: */15 * * * *(不是 */15/15)
  • 想在工作日(周一到周五)的每小时整点运行: 0 * * * 1-5

别忘了用 crontab -e 编辑后保存,系统不会自动提示是否生效——改完建议立刻用 crontab -l 确认内容已更新。

脚本在 crontab 里不执行?多半是环境问题

crontab 默认使用极简 shell 环境(PATH 很短,通常不含 /usr/local/bin 或 ~/bin),且不读取用户 .bashrc/.profile。所以即使命令在终端能跑,放进 crontab 就报 “command not found”。

  • 写绝对路径:比如用 /usr/bin/python3 而不是 python3
  • 显式设置环境变量:在 crontab 文件顶部加一行 PATH=/usr/local/bin:/usr/bin:/bin
  • 或者统一用 bash 包装: 0 3 * * * /bin/bash -c 'cd /home/user/script && ./backup.sh >> /tmp/backup.log 2>&1'

务必重定向输出(>>2>&1),否则错误信息会静默丢失,排查无从下手。

at 命令适合什么场景?怎么确保它真能跑

at 适用于明确时间点的一次性任务,比如“今晚 23:45 关机”、“明天上午 10 点发邮件提醒”。它不依赖用户登录状态,但需要 atd 服务开启。

  • 检查 atd 是否运行:systemctl is-active atd,如为 inactive,运行 sudo systemctl enable --now atd
  • 提交任务:echo "shutdown -h now" | at 23:45;也可用 at now + 10 minutes
  • 查看待执行任务:atq;取消任务:atrm

注意:at 默认使用 /bin/sh,如果你的命令依赖 bash 特性(如数组、[[ ]]),得显式指定:echo '#!/bin/bash\necho $(date)' | at now,并确保第一行是 shebang。

调试与日志:别让定时任务变成黑盒

crontab 和 at 都不会主动告诉你失败原因。开启基础监控很关键:

  • 所有定时任务末尾加日志记录,例如:2>&1 | tee -a /var/log/myjob.log
  • 检查系统级 cron 日志:sudo grep CRON /var/log/syslog(Ubuntu/Debian)或 /var/log/cron(CentOS/RHEL)
  • 临时测试可用 run-parts --test /etc/cron.hourly 检查脚本命名和权限(必须可执行、无扩展名、不以 . 开头)
  • date -d "next Friday" 快速算出相对时间表达式对应的具体时刻,避免手动推算出错

不复杂但容易忽略。


# linux  # 才会  # 告诉你  # 适用于  # 无从下手  # 扩展名  # 不含  # 一到  # 别忘了  # 周日  # debian  # python  # centos  # ubuntu  # 环境变量  # bash  # echo  # date  # var  # 别让 

我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 76543 55
    sale#ncxiaolao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得笑劳科技策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 76543 55
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询