使用 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 运行。
- 创建脚本(例如
~/greet.sh): - 使其可执行:
chmod +x ~/greet.sh - 添加到 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 反馈 — 无需本地设置。