在 Linux 中使用 Cron 调度任务的初学者指南

Cron 是一个强大的调度程序,它允许您调度脚本或命令并定期运行它们。 它是保持各种程序和自定义脚本运行的心跳。 您安排脚本在 crontab 文件中运行。 虽然这个文件在第一次查看时可能会令人生畏,但只要稍加练习就可以相当容易地掌握它。

在某些 Linux 发行版中,例如 Arch Linux,默认情况下不安装 cron,因为它使用 systemd 作为 cron 替代品。 此外,还有各种 cron 实现,每个都有自己的编辑/调度 cron 作业的方式。 在本教程中,我们将重点关注 cronie,它是大多数 Linux 发行版(如 Ubuntu)中的默认设置。

查看 cron 条目

查看您的 crontab 允许您查看将在您的帐户下运行的计划任务。

您还可以使用查看 root 帐户的计划任务 sudo.

编辑 cron 条目

如果您从未设置过 cron 作业,查看此文件将显示空白文件或带有注释的文件。 要添加条目,您需要使用 -e 选项。

Crontab 条目将始终遵循相同的语法,允许您检查任何机器上的条目以及以编程方式创建它们。

crontab 条目表达式的基本语法是:

  • m = 0 到 59 之间的分钟
  • h = 0 到 23 之间的小时
  • d = 1 到 31 之间的日期
  • mon = 1 到 12 之间的月份
  • dow = 0 到 6 之间的星期几。零是星期日。
  • 命令 = 要运行的命令。

为了 example,你需要定期运行一个命令来检查你的mysql服务器是否运行良好。 要使命令每小时运行一次,请使用以下语法:

这意味着它将每小时运行一次。 如果您只想让它在每天凌晨 1.42 点运行,那么命令变为:

此外,逗号可用于多个项目(例如 1,3,5),连字符可用于范围。 在表达式中使用星号代替项目的特殊用途表示该项目针对该字段的所有值运行。 (小时字段中的星号表示从 0 到 23 每小时运行一次。)一行上的井号 (#) 表示注释(这意味着该行代码不会被执行)。

最后,正斜杠将指示步长值。 为了 example,每五分钟将输入为 */5(从保存 crontab 并创建 cron 作业的那一刻起)。 如果您仅使用“5”,则该条目将仅在五分钟标记处运行。

为了这 example:

  • 34:在 0 到 59 之间运行的分钟数
  • 3: 小时,在 0 到 23 之间
  • *:中间的两个星号表示每天(1 到 31)和每月(1 到 12)
  • 0: 最后的零表示星期日

此任务将在每周日的每个月的凌晨 3:34 运行。

短代码

Crontab 允许您使用一些短代码来使您的 cron 条目更易于阅读。

  • @reboot – 运行一次,在启动时
  • @yearly – 每年运行一次,“0 0 1 1 *”。
  • @annually – 与@yearly 相同
  • @monthly – 每月运行一次,“0 0 1 * *”
  • @weekly – 每周运行一次,“0 0 * * 0”
  • @daily – 每天运行一次,“0 0 * * *”
  • @midnight – 与@daily 相同
  • @hourly – 每小时运行一次,“0 * * * *”

为了 example:

以其他用户身份编辑 cron 条目

有时您需要以 root 身份添加 crontab。 为了 example更新 Let’s Encrypt SSL 证书自动,您需要以 root 身份运行更新脚本。 要以 root 身份编辑 crontab,只需添加一个 sudo 在命令前面:

同样,您可以将 cron 作业安排为另一个用户,方法是使用 -u 旗帜:

为了 example,要以“www-data”用户身份运行 cron 作业,请使用以下命令:

审查 cron 活动

尽管您现在已设置为运行特定的命令或脚本,但您可能希望确保它运行。 内置在 cron 中的是,一旦运行命令,它将向 cron 所有者发送电子邮件。 这可以通过“MAILTO”变量进行更改。

cron-mailto 变量

添加 [email protected] 会将所有 cron 作业报告发送到指定的电子邮件。 此变量通常可以在 crontab 编辑屏幕的最顶部找到。 但是,如果它不存在,您可以添加变量,它会按预期工作。

多个电子邮件地址可以用逗号分隔。 如果您需要在其他地方通过电子邮件发送不同的命令,您可以直接在命令上方添加 MAILTO 命令。 该 mailto 之后的命令将通过电子邮件发送到新地址。 如果你走 MAILTO= 空白,通知将发送给 cron 条目的所有者。

或者,您可以使用重定向运算符 (>) 将输出发送到需要的地方。

以上将输出重定向到“/dev/null”,它不发送电子邮件并丢弃输出。

如果您想确保作业运行并且不需要电子邮件,您还可以检查 cron 日志。 在大多数系统上,访问 cron 日志需要超级用户权限。 cron 日志可以在“/var/log”下找到。 cron 或 syslog 文件将显示已执行 cron 条目的日志。

cron 选项卡日志

可以进一步限制 Cron 以允许特定用途,并且可以设置默认值。 通过添加管道和重定向,可以设置 cron 条目来执行各种操作。 归根结底,cron 是一种工具,它使您能够在闲暇时运行任务,并确保按照您的意愿对系统的某些部分进行日常维护。

订阅我们的新闻!

我们最新的教程直接发送到您的收件箱

注册所有时事通讯。 注册即表示您同意我们的隐私政策并且欧洲用户同意数据传输政策。 我们不会共享您的数据,您可以随时取消订阅。 订阅