蚊章汇 - Darshna Das
type: channel
link: https://linuxcn.bwsl.wang/author/1542/
description: Darshna Das
items: 使用 cron 调度任务

使用 cron 调度任务
type: item
date: 2021-05-12T20:03:50+08:00
description: cron 是一个调度守护进程，它以指定的时间间隔执行任务，这些任务称为 corn 作业，主要用于自动执行系统维护或管理任务。例如，你可以设置一个 cron 作业来自动执行重复的任务，比如备份数据库或数据，使用最新的安全补丁更新系统，检查磁盘空间使用情况，发送电子邮件等等。 cron 作业可以按分钟、小时、日、月、星期或它们的任意组合运行。cron 的一些优点以下是使用 cron 作业的一些优点：你可以更好地控制作业的运行时间。例如，你可以精确到分钟、小时、天等。它消除了为循环任务逻辑而去写代码的需要，当你不再需要执行任务时，可以直接关闭它。作业在不执行时不会占用内存，因此你可以节省内存分配。如果一个作业执行失败并由于某种原因退出，它将在适当的时间再次运行。安装 cron 守护进程幸运的是，Fedora Linux 预先配置了运行重要的系统任务来保持系统更新，有几个实用程序可以运行任务例如 cron、anacron、at 和 batch 。本文只关注 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 个部分：分钟小时一个月中的某天月份一周中的某天下面是一种更图形化的方式来解释语法： .--------------- 分钟 (0 - 59) | .------------- 小时 (0 - 23) | | .---------- 一月中的某天 (1 - 31) | | | .------- 月份 (1 - 12) 或 jan、feb、mar、apr … | | | | .---- 一周中的某天 (0-6) (周日=0 或 7) | | | | | 或 sun、mon、tue、wed、thr、fri、sat | | | | |…