0Pricing
DevOps Bootcamp · 课时

使用 Cron 调度任务

掌握“cron”工具,在指定的时间或时间间隔自动运行脚本和命令。

使用 Cron 调度任务 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

使用 Cron 自动执行任务

欢迎来到自动化的世界!在本课中,您将学习 cron。它是 Linux 中功能强大的工具,可以让您安排命令或脚本在指定时间自动运行。

想象一下,无需亲自动手,就能设置每日备份或每小时进行系统检查——这就是 cron 的作用!

您的个人 Crontab 文件

Linux 系统中的每个用户都有自己的 crontab(定时任务表)文件。您可以在这里保存所有已安排的任务。

要编辑个人 crontab,您需要使用命令 crontab -e。该命令会在默认文本编辑器中打开文件,供您添加新的任务。

Crontab 条目:时间字段

一条 crontab 条目由六个部分组成。前五个部分定义命令何时运行,并且各部分之间用空格分隔:

  • 分钟: 0-59
  • 小时: 0-23(0 表示午夜)
  • 月份中的日期: 1-31
  • 月份: 1-12(或 Jan-Dec)
  • 星期: 0-7(0 或 7 表示星期日,1 表示星期一)

Crontab 条目:命令

一条 crontab 条目的第六个也是最后一个部分,是您希望执行的命令或脚本。

这里必须为命令和脚本使用绝对路径(例如使用 /usr/bin/python,而不仅仅是 python)。Cron 任务运行在精简环境中,因此您平时使用的 PATH 可能不可用。

Crontab 特殊字符

为了让调度安排更加灵活,cron 使用以下特殊字符:

  • *(星号):匹配所有可能的值(例如每分钟、每小时)。
  • ,(逗号):分隔值列表(例如 1,15 表示第 1 分钟和第 15 分钟)。
  • -(连字符):定义值的范围(例如 9-17 表示第 9 小时到第 17 小时)。
  • /(斜杠):指定步长值(例如 */10 表示每 10 分钟)。

预定义的调度快捷方式

针对常见的调度需求,cron 提供了便捷的快捷方式,可以替代前五个时间字段:

  • @reboot:系统重启后运行一次。
  • @yearly(或 @annually):每年运行一次(0 0 1 1 *)。
  • @monthly:每月运行一次(0 0 1 * *)。
  • @weekly:每周运行一次(0 0 * * 0)。
  • @daily(或 @midnight):每天运行一次(0 0 * * *)。
  • @hourly:每小时运行一次(0 * * * *)。

动手实践:安排一个简单脚本

让我们创建一个记录问候语的简单脚本,然后安排它每天上午 10:00 运行。

  1. 创建脚本(例如 ~/greet.sh):
  2. 使其可执行: chmod +x ~/greet.sh
  3. 添加到 crontab(crontab -e):
    0 10 * * * /home/user/greet.sh
    这条记录表示:在第 0 分钟、第 10 小时(上午 10 点),每月的每一天、每个月、每个星期几都运行 /home/user/greet.sh。
#!/bin/bash
# This script logs a greeting to a temporary file.
echo "Hello from Cron! The time is $(date)" >> /tmp/cron_greeting.log

管理您的 Cron 任务

添加 Cron 任务后,您还需要对其进行管理:

  • 要列出当前的 crontab 条目:crontab -l
  • 要删除全部 crontab 条目(请务必谨慎,因为无法撤销!):crontab -r

每次修改后,都应使用 crontab -l 检查 crontab,确保其中的条目正确。

Cron 的环境变量

请记住,Cron 任务运行在精简环境中。这意味着它们通常没有与交互式 Shell 相同的环境变量(例如 PATH)。

如果脚本依赖特定命令,请使用这些命令的绝对路径,或者直接在 crontab 文件顶部定义所需的环境变量,例如 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。

Crontab 语法挑战

您需要安排名为 /home/user/daily_report.sh 的脚本,在每个工作日(星期一至星期五)上午 9:15运行。哪一条 crontab 条目是正确的?

回顾:掌握 Cron 调度

做得很好!您现在已经掌握了使用 cron 安排任务的基础知识。

  • 您了解了 crontab 文件,以及如何使用 crontab -e 编辑它。
  • 您理解了 Cron 条目的六个字段,包括时间字段和命令。
  • 您探索了特殊字符和预定义快捷方式,从而实现灵活的调度。
  • 您知道如何使用 crontab -l 和 crontab -r 管理任务。
  • 您还学习了绝对路径和环境变量在 Cron 环境中的重要性。

现在就开始自动化吧!

常见问题解答

「使用 Cron 调度任务」课时是免费的吗?

是的 — 「使用 Cron 调度任务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「使用 Cron 调度任务」这节课中我会学到什么?

掌握“cron”工具,在指定的时间或时间间隔自动运行脚本和命令。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「使用 Cron 调度任务」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Cron 调度任务
  2. 自动化系统管理
  3. 高级脚本编写项目
  4. 自动轮换与清理日志
← 返回 DevOps Bootcamp