使用 cron 调度任务

cron 是一个调度守护进程,它以指定的时间间隔执行任务,这些任务称为 corn 作业,主要用于自动执行系统维护或管理任务。

使用 cron 调度任务

cron 是一个调度守护进程,它以指定的时间间隔执行任务,这些任务称为 corn 作业,主要用于自动执行系统维护或管理任务。例如,你可以设置一个 cron 作业来自动执行重复的任务,比如备份数据库或数据,使用最新的安全补丁更新系统,检查磁盘空间使用情况,发送电子邮件等等。 cron 作业可以按分钟、小时、日、月、星期或它们的任意组合运行。

cron 的一些优点

以下是使用 cron 作业的一些优点:

  • 你可以更好地控制作业的运行时间。例如,你可以精确到分钟、小时、天等。
  • 它消除了为循环任务逻辑而去写代码的需要,当你不再需要执行任务时,可以直接关闭它。
  • 作业在不执行时不会占用内存,因此你可以节省内存分配。
  • 如果一个作业执行失败并由于某种原因退出,它将在适当的时间再次运行。

安装 cron 守护进程

幸运的是,Fedora Linux 预先配置了运行重要的系统任务来保持系统更新,有几个实用程序可以运行任务例如 cron、anacronatbatch 。本文只关注 cron 实用程序的安装。cron 和 cronie 包一起安装,cronie 包也提供 cron 服务。

要确定软件包是否已经存在,使用 rpm 命令:

“`
$ rpm -q cronie
Cronie-1.5.2-4.el8.x86_64

“`

如果安装了 cronie ,它将返回 cronie 包的全名。如果你的系统中没有安装,则会显示未安装。

使用以下命令安装:

“`
$ dnf install cronie

“`

运行 cron 守护进程

cron 作业由 crond 服务来执行,它会读取配置文件中的信息。在将作业添加到配置文件之前,必须启动 crond 服务,或者安装它。什么是 crond 呢?crond 是 cron 守护程序的简称。要确定 crond 服务是否正在运行,输入以下命令:

“`
$ systemctl status crond.service
● crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor pre>
Active: active (running) since Sat 2021-03-20 14:12:35 PDT; 1 day 21h ago
Main PID: 1110 (crond)

“`

如果你没有看到类似的内容 Active: active (running) since…,你需要启动 crond 守护进程。要在当前会话中运行 crond 服务,输入以下命令:

“`
$ systemctl run crond.service

“`

将其配置为开机自启动,输入以下命令:

“`
$ systemctl enable crond.service

“`

如果出于某种原因,你希望停止 crond 服务,按以下方式使用 stop 命令:

“`
$ systemctl stop crond.service

“`

要重新启动它,只需使用 restart 命令:

“`
$ systemctl restart crond.service

“`

定义一个 cron 作业

cron 配置

以下是一个 cron 作业的配置细节示例。它定义了一个简单的 cron 作业,将 git master 分支的最新更改拉取到克隆的仓库中:

“`
*/59 * * * * username cd /home/username/project/design && git pull origin master

“`

主要有两部分:

  • 第一部分是 */59 * * * *。这表明计时器设置为第 59 分钟执行一次。(LCTT 译注:原文此处有误。)
  • 该行的其余部分是命令,因为它将从命令行运行。 在此示例中,命令本身包含三个部分:
    • 作业将以用户 username 的身份运行
    • 它将切换到目录 /home/username/project/design
    • 运行 git 命令拉取 master 分支中的最新更改

时间语法

如上所述,时间信息是 cron 作业字符串的第一部分,如上所属。它决定了 cron 作业运行的频率和时间。它按以下顺序包括 5 个部分:

  • 分钟
  • 小时
  • 一个月中的某天
  • 月份
  • 一周中的某天

下面是一种更图形化的方式来解释语法:

“`
.- 一月中的某天 (1 – 31)
| | | .- 月份 (1 – 12) 或 jan、feb、mar、apr …
| | | | .

via: https://fedoramagazine.org/scheduling-tasks-with-cron/

作者:Darshna Das 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

主题测试文章,只做测试使用。发布者:eason,转转请注明出处:https://aicodev.cn/2021/05/12/%e4%bd%bf%e7%94%a8-cron-%e8%b0%83%e5%ba%a6%e4%bb%bb%e5%8a%a1/

Like (0)
eason的头像eason
Previous 2021年5月12日
Next 2021年5月13日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信