掌握Cron作业并自动执行基本服务器任务

文章作者:杰里·洛(Jerry Low)
  • 推荐文章
  • 更新:Oct 17,2020

网站托管旨在简单,直接,完美适合在旅途中的专业人士,根本无法每天每小时投入 管理他们的托管服务器 和相关的任务。

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

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

这些人很幸运,因为每个任务可以每天,每周或每月安排,甚至在某些情况下甚至可以相距更远,并且可以在Crontab实用程序中向服务器提供有关如何执行任务的特定说明,如何知道完成的时间以及实际完成的任务时该怎么做。

用户可以放松,而服务器可以完成所有繁重的工作数小时; 或者他们可以简单地安排工作在他们自己的办公室努力工作时完成。 因为它是自动化的,所以Cron工作几乎可以在一天中的任何时间发生。

学习使用Cron作业的格式来告诉时间

Cron的工作并不是一件容易掌握的事情; 事实上,它被广泛认为是标准上最先进的配置之一 Linux的 or Unix的 网络服务器。 这部分是因为用于编程这些工作的语言过于陈旧,在某些情况下完全倒退。 当谈到有关Cron工作或Cron标签的某个时间时,事情肯定是倒退的,颠倒的,有点令人困惑。

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

星期几,每月一天,每周一天

它只是一条线,偶数和命令在一个统一的收缩中是并排的。 这足以让大多数开发人员和服务器运营商畏缩,事实上,他们中的许多人都会这样做,直到他们开始开发高效的Cron工作。

值得注意的是,Cron工作时间的每个方面都是数字的; 没有月份名称日名称,或在执行任务的整个开发期间使用的其他词语。

因此,让我们在7月10th为30:7设置一个Cron作业,以便了解Cron作业在严格数字时的工作时间。

30 10 07 07 *

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

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

Cron工作实例

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

  • @日常
  • @monthly
  • @每年

由于无法使用小时和分钟严格控制和确定时间,因此根据服务器的内部时间,按照要求的间隔,这些作业将在午夜时分发生。 这意味着@monthly间隔将在每月第一天的正午夜发生。 @yearly间隔将发生在每年第一天的正午夜; @daily间隔将在一年中的每一天的正午夜发生。

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

掌握“ COMMAND”变量及其处理方法

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

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

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

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

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

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

掌握典型服务器上的整体Cron选项卡文件

指定执行的每个特定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作业是服务器管理员可以执行的最简单的操作之一。

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

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

关于Jerry Low

WebHostingSecretRevealed.net(WHSR)的创始人 - 100,000用户信任和使用的托管评论。 超过15在网络托管,联盟营销和SEO方面的多年经验。 ProBlogger.net,Business.com,SocialMediaToday.com等的贡献者。