什么是 Cron Job?2025年3月17日 | 阅读 8 分钟 Cron 是一个工作调度监控程序,它能在预定的时间运行指定的任务。这些任务被称为 Cron Job,通常用于优化安全管理或日常管理。 例如,您可以使用 Cron 运行诸如存储数据到数据库系统或信息、对自动更新进行结构化重组、检查磁盘空间利用率、发送消息等应用程序。 Cron 任务可以设置为每半小时、每分钟、每月、每季度、每年、每周或这些时间间隔的组合来启动。 Cron 内核是一项集成的 Linux 功能,用于调度程序在您的系统上的执行。Cron 会搜索 crontab(Cron 表)中预先设置的指令和文件。您可以使用特定的格式设置 Cron Job 来立即管理代码或其他指令。 Cron 表文件Crontab(Cron 表)是一种指定 Cron 任务的文件格式。Crontab 文件分为两种类型。
用户的 crontab 文件以用户名称命名,并且其位置取决于操作系统。 在 Red Hat 系列的操作系统(包括 CentOS)中,Crontab 文件保存在 `/var/spool/cron` 文件夹中,而在 Unix 和 Debian 中,它们存储在 `/var/spool/cron/crontabs` 数据库中。 尽管您可以直接修改用户 crontab 文件,但建议使用 `crontab` 命令。 `/etc/crontab` 文件和 `/etc/cron.d` 文件夹中的插件是系统范围的 crontab 文件,只有系统管理员才能访问。 在大多数 Linux 发行版中,代码也可以放在 `/etc/cron.hourly`、`/etc/cron.daily`、`/etc/cron.weekly`、`/etc/cron.monthly` 文件中,它们将分别在每个小时/天/周/月执行。 Crontab 语法Cron 会在系统设置中查找要运行的指令列表。为了理解 crontab 设置表中的字段,内核会采用一种特定的格式。 要设置 Cron 任务,我们必须首先了解构成此语法的基本组成部分。crontab 路径应遵循以下格式: e f g h i /directory/command output 因此,cron 命令的组成部分如下:
命令的前五个字段是描述指令何时以及多久运行一次的数字。每个字段,意味着一个唯一的值,都用空格分隔。 下表描述了字段的各种可能值以及示例模型:
要执行的指令指定在下一部分中。它代表了您希望 Cron 运行的代码或指令的准确数据库和文件类型。 例如 /root/backup.sh 在上例中,指令导航到系统的根目录并执行 `backup.sh` 代码。您可以随意使用任何代码或命令。
当 Cron 运行时,它会通过交换机将警报发送到 crontab 目录的所有者。这是一种跟踪任务的实用方法。请记住,标准或不重要的任务可能会很快填满您的邮箱。 由于这是一个附加组件,您可以通过关闭输出电子邮件来避免这种情况。要禁用邮件输出,请在组合和命令部分之后执行新的序列:`>/dev/null 2>&1`。 * * * * * directory/command/ >/dev/null 2>&1 Crontab 运算符Cron 语法还使用运算符进行性能优化。运算符是大型内部函数,可有效地作用于 Cron 属性值。运算符讨论如下:
星号运算符表示任何值或“所有”。假设您在小时字段中看到星号(*),则意味着该任务将每小时执行一次。它代表所有值。使用此运算符是为了收集整个月或整个周的运行数据。
您可以使用逗号运算符指定一系列要重复的项目。它还定义了不同的唯一值。 例如,如果您在小时字段中输入 2,5,8,则任务将在上午 2 点、上午 5 点和上午 8 点执行。
您可以使用连字符运算符指定一系列值。如果您在星期几字段中输入 2-5,则任务将在每个工作日(周二至周五)执行。它也代表一组参数。
斜杠运算符允许您指定在它们之间特定间隔重复的值。此运算符还可以用于将一个数字分成不同的阶段。 例如,如果您在小时字段中输入 `*/4`,则意味着该操作将每四小时执行一次。 这等同于指定 0,4,8,12,16,20。您可以在斜杠运算符之前使用一系列数据而不是星号。 例如, `1-30/10` 表示与 `1,11,21` 相同。 系统范围的 Crontab 文件系统范围的 crontab 目录具有与用户 crontab 完全不同的语法。它还包括一个绑定的用户字段,指定哪个用户将执行 Cron 任务。 * * * * * <username> command (s) 预设宏为了识别常见的持续时间,使用了许多特殊的 Cron 时间表模块。您可以将这些快捷键替换为五列日期要求。下面将讨论它们:
用于在每年 1 月 1 日执行特定任务一次。它等同于 `0 0 1 1 *`。
它每月一次在月初的午夜执行所需任务。`@monthly` 等同于 `0 0 1 * *`。
用于每周六中午执行特定任务一次。`@weekly` 等同于 `0 0 * * 0`。
用于每天午夜访问特定任务。`0 0 * * *` 等同于 `0 0 * * *`。
`@hourly` 可用于在每个小时开始时执行一次特定任务。它也类似于 `0 * * * *`。
用于在桌面配置时执行特定任务。 Linux 中的 Crontab 命令您可以使用 `crontab` 脚本来配置、查看或授予对 crontab 目录的访问权限,以便进行格式化。
此指令用于修改或开发 crontab 目录,如果之前不存在的话。
此命令用于删除现有的 crontab 目录。
`Crontab -l` 命令可以帮助您显示 crontab 信息。
用于修改其他用户的 crontab 文件。此选项需要使用系统管理员权限。
此指令用于删除您现有的 crontab 目录,并在删除前进行提示。 crontab 命令使用由 Graphic 或 Author 配置文件指定的编辑器来访问 crontab 目录。 Crontab 变量Cron 守护进程会自动调整许多环境变量。
如何设置 Cron Job?以下步骤将向您展示如何在您的 Shell 帐户下创建自定义 Cron Job。这些指南假定您尚未在 Windows 中创建 Cron Job,因此 crontab 文件是空的。 步骤 1:首先,您需要通过 SSH 以您想要创建 Cron 任务的系统管理员身份登录到您的帐户。 步骤 2:现在,在登录后执行以下命令以访问您的 crontab 地址。 ![]() 您的 crontab 文件中似乎没有 MAILTO 行。为了性能目的,您需要提供 Cron Job 生产将分发到的域。如果您不想收集 Cron Job 的结果,请手动插入,并且不会处理任何 Cron Job 的结果。 步骤 3:输入电子邮件地址(或将其留空)后,您必须选择一个单词处理器。 步骤 4:现在,您需要选择一个编辑器。运行 `select-editor` 命令以便以后进行更改。 ![]() 步骤 5:然后,您将被提示选择一个代码编辑器来打开此文件。#6 使用 `nano` 编辑器,这是最简单的选择。 如果您登录到 Host 机器,上述命令将出现。如果您登录到基于 Debian 的 VPS(虚拟专用服务器),您可能会看到上面给出的列表。 步骤 6:现在,选择一个脚本编辑器。运行 `select-editor` 以便以后进行更改。 ![]() 步骤 7:将显示一个空的 crontab 文件。在此处插入您的 Cron 作业的文件。此示例执行名为 `mail.php` 的文件,其邮件为“username”。它应该是与您正在使用的 SSH 帐户相同的帐户。此示例将在晚上 8:13 执行 Cron 任务。 ![]() 命令分为两部分。第一部分必须提供用于执行 Cron 任务的应用程序的路径。 假设您有一个名为 `script.php` 的 PHP 文件位于域的目录中:
要执行此指令,请插入首选 PHP 版本的链接,后跟一个空格,然后是文件的路径:
您也可以通过将“PHP”替换为完整路径来利用标准版本。 步骤 8:文件应该被保存。下面应该显示以下响应: ![]() Cron Job 现在可以每天晚上 8:13 运行。 Crontab 的限制您可以通过编辑 `/etc/cron.deny` 和 `/etc/cron.allow` 文件来控制哪些信息可用于 crontab 命令。这些文件本质上是用户名的列表,每个用户名占一行。 通过扩展,如果只有 `/etc/cron.deny` 文件存在且为空,则表示 crontab 命令可供所有用户访问。如果您想拒绝相关访问权限到 crontab 指令,请在此目录中附加用户 ID。 如果 `/etc/cron.allow` 文件存在,则只有其中列出的用户才能使用 crontab 命令。如果这两个文件都不存在,则只有具有管理员权限的用户才能使用 crontab 指令。 下一个主题PH scale |
我们请求您订阅我们的新闻通讯以获取最新更新。