掌握 Cron 作业和自动化基本服务器任务

掌握 Cron 作业和自动化基本服务器任务


Web 托管的设计目的是简单、直接和完美的专业人士,他们在旅途中根本无法将每一天的每一个小时都用于管理他们的托管服务器和相关任务。

为此,几乎每台基于 Unix 或 Linux 的服务器都提供了称为“Cron Job”或“Crontab”的自动化任务管理器。

该软件实用程序与 Microsoft Windows 中的任务调度程序非常相似,因为它可以被告知在特定时间执行某些操作,从而使用户免于手动执行这些任务。 当人们考虑到许多日常服务器维护、备份和通信过程可能需要数小时才能完成时,这一点尤其重要。 大多数人只是想在办公室结束一天后回家放松一下,而不是花一晚上的时间备份文件和管理联系人。

这些人很幸运,因为每项任务都可以安排在每天、每周或每月的基础上——在某些情况下甚至更远,并且可以在 Crontab 实用程序中向服务器提供有关如何执行任务的具体说明,如何知道它何时完成,以及当手头的任务实际完成时该做什么。

当他们的服务器在几个小时内完成所有繁重的工作时,用户将能够放松; 或者他们可以在自己的办公室辛勤工作时简单地安排要完成的工作。 因为它是自动化的,所以 Cron 作业几乎可以在一天中的任何时间进行。

学习使用 Cron Job 的格式来判断时间

Cron 工作并不是一件容易掌握的事情。 事实上,它被广泛认为是标准 Linux 或 Unix Web 服务器上可用的最高级配置之一。 这部分是因为用于对这些工作进行编程的语言非常陈旧,在某些情况下,完全倒退。 当谈到向有问题的 Cron 作业或 Cron 选项卡讲述某个时间时,事情肯定是倒退的,颠倒的,而且有点混乱。

通过 Cron 作业告诉时间的格式是这样的:

MINUTE HOUR DAY-OF-MONTH MONTH-OF-Week 命令

都是一行,偶数和命令在一个统一的收缩中并排。 这足以让大多数开发人员和服务器操作员畏缩不前,事实上,他们中的许多人在开发高效的 Cron 作业时遇到了困难。

需要注意的是,Cron 作业时间的各个方面都是数字的。 没有月份名称、日期名称或在整个开发过程中使用的其他词,在此期间应该执行任务。

因此,让我们将 Cron 作业设置为 7 月 7 日上午 10:30,以便了解将 Cron 作业的时间转换为严格数字后的样子。

30 10 07 07 *

上面的例子表明工作应该在七月七日的十小时的第三十分钟完成。 所有数字都是两位数,即使月份或日期只有一位数。 记住这一点很重要,因为单个数字通常会导致 Cron 作业无效,并且永远不会执行。 在 con 结构的末尾,星号表示作业应在一周中的任何一天执行。 这很重要,因为将其设置为星期三的 03 意味着该任务仅在 7 月 7 日是星期二时执行。 这很可能每七八年发生一次,这对大多数开发人员来说有点吸收。

设置 Cron 作业时要考虑的另一个重要考虑因素是小时格式是 24 小时军用时间而不是 12 小时民用时间。 要将 Cron 作业的时间更改为晚上 10 点,小时将更改为 22 而不是当前的 10。

Cron 作业示例

最后,如果用户只是想每天、每月甚至每年完成一项任务,他们可以完全跳过设置特定时间的过程。 相反,Cron 作业流程提供了简单地使用变量来确定作业何时在这些频繁的时间间隔内完成。 这些包括:

因为时间不能严格控制和使用小时和分钟来确定,所以这些作业将根据服务器的内部时间,在请求的时间间隔恰好在午夜发生。 这意味着@monthly 间隔将发生在每月第一天的午夜。 @yearly 间隔将发生在每年第一天的午夜; 并且@daily 间隔将发生在一年中的每一天的午夜。

这比设置特定的日期、时间和星期几要容易得多,但是在每月或每年的第一天午夜执行的某些任务可能对某些客户有一些缺点。 在安排恰好在午夜发生的任务时,请始终牢记管理员和站点访问者的需求。

掌握“COMMAND”变量以及如何处理它

从上面的示例中可以看出,构建一个实际的 Cron 作业相对容易。 必须先定义日期,然后立即定义 Cron 作业的功能。 该功能实际上可以是任何东西,包括运行 PHP 脚本或运行将服务器的文件和数据存储在远程或本地文件中的自定义备份脚本。 为澄清起见,我们将在之前使用的示例的基础上构建并指示 Cron 作业在 7 月 7 日上午 10:30 运行 PHP 脚本。 这个 PHP 脚本将被称为“backup.php”,我们假设 PHP 文件是一个完整的备份脚本,当服务器指示时,它会在每月 7 日收集、压缩和存储站点文件。 这是它的样子:

30 10 07 07 * http://your-domain-name.com/backup-scripts/backup.php

当这个 Cron 作业进入服务器的 Cron 选项卡列表时,它会在每年的 7 月 7 日上午 10:30 自动执行。 它将运行位于“backup-scripts”目录中的 PHP 备份脚本,这就是 Cron 作业设置的真正天才之处。

它不需要用户的高级命令来执行站点备份和缓存刷新等操作,它只是让用户能够以指定的时间间隔或在特定日期的特定时间执行现有脚本。 这意味着不需要超出用户已经知道的高级编程知识。 PHP 完全能够备份站点文件,更高级的文件和编程语言也可以备份,更高级的用户可能会为他们的 Linux 服务器开发这些文件和编程语言。

这个简单的设置几乎可以用来做任何事情,只要预先编写的脚本提供独立于用户输入的这些操作的执行。 这确实意味着在 Cron 选项卡中由 Cron 作业执行的任何脚本都必须完全自动化并且能够自行执行。 例如,告诉 Cron 作业每天在同一时间执行 WordPress 索引或主题文件是不可能的(而且根本不合逻辑)。 根本没有定义任何动作或自动化流程,虽然 Cron 作业肯定会执行文件,但它什么也不做,并且会保持静止,直到以另一种方式提供用户输入。

因此,如果编码或下载备份脚本或其他脚本以使用 Cron 作业,请始终确保它们需要完全零用户输入才能成功执行其功能。 自动化任务调度程序必须与它执行的文件中的自动化进程配对。 这条规定没有例外。

掌握典型服务器上的整体 Cron Tab 文件

指定执行的每个特定 Cron 作业都位于一个较大的文件中,该文件称为 Cron 选项卡。 一些服务器有多个 Cron 选项卡,用于多种类型的应用程序和自动输入,但这很少见,主要是为最先进的服务器操作员和所有者保留的。 只有一个 Cron 选项卡文件的用户可以使用以下命令来编辑、删除或查看整个文件,并在文件中列出每个特定的自动化任务以供查看。

crontab -r

此命令删除(因此为“r”)或删除整个 Cron 选项卡文件本身。 这将有效地清除所有命令和自动化脚本,并将其恢复为可以重建的空白文件。 对于那些设法损坏文件或以某种方式滥用任务和时间的人来说,这是一个合适的选择。 有时,从头开始更容易。

crontab -e

在这种情况下,“e”代表“编辑”。 那些想要编辑 Cron 选项卡中描述的功能而不是完全删除文件的用户可以使用此命令进入命令行编辑器,这将允许他们添加新任务、删除旧任务或更改适用的计划Cron 选项卡文档中列出的每个 Cron 作业的时间。

crontab -l

在这种情况下,通过将“L”与“look.”关联起来就很容易记住了。 此命令允许服务器管理员简单地查看其 Cron 选项卡文件的完整内容,而无需将其完全从服务器中删除,也无法编辑内容。 Cron 选项卡内容的这种只读显示非常适合记住哪些任务被安排在哪些时间,以及验证文件本身的完整性。

为什么掌握 Cron 作业和 Cron Tab 自动化文件很重要

一般来说,服务器的唯一自动化是其硬盘的旋转和其硬件功能的性能。 但是,除此之外,服务器必须经过培训和指导才能执行常规和非凡的任务,而不仅仅是显示软件控制面板或升级用户放置在硬盘上的 PHP 或 Perl 安装。

重要的是要记住,服务器可以定期执行的最基本功能之一是创建数据和设置的站点备份。 如果没有 Cron 作业,几乎没有办法自动化这个过程,并且由于互联网的性质和每天通过网站的所有恶意访问者,如果不能每天或每周自动化这个过程可能会导致重大和灾难性的数据丢失。

但是,除此之外,还有许多任务应该使用 Cron 作业流程自动化。 这些任务包括清除任何可能向网站访问者显示过时图像或打印内容的网站缓存; 它还包括删除旧文件、清理旧目录和图像,以及确保存储在服务器硬盘驱动器上的所有内容都是最新的且未损坏。

就像一台健康的个人计算机会自动安排磁盘维护、防病毒和恶意软件扫描、软件更新和文件删除一样,一台健康的服务器必须配置为能够自我照顾并保持良好的信誉。 否则,它很容易受到崩溃、黑客攻击和数据丢失的影响,从而导致利润、广告、内容创建甚至搜索引擎排名状态的损失。

易于学习和部署

在标准 Cron 选项卡中创建 Cron 作业是服务器管理员可以做的最简单的事情之一。

该过程位于标准命令行中,并将每个时间段分解为两位数代码。

因为它不需要任何新的编程语言的额外知识来自动执行任务,所以该服务基本上建立在管理员已经拥有的现有编程和服务器操作知识的基础上。 在这种情况下,根本没有理由不开始自动化基本的服务器功能并确保站点数据和操作的完整性。

Leave a Comment