[ad_1]
Cron 是一个调度守护进程,它以指定的时间间隔执行任务。 这些任务称为 cron 作业,主要用于自动执行系统维护或管理任务。 例如,您可以设置一个 cron 作业来自动执行重复性任务,例如备份数据库或数据、使用最新的安全补丁更新系统、检查磁盘空间使用情况、发送电子邮件等。 cron 作业可以安排为按分钟、小时、每月的某天、每月、每周的某天或这些的任意组合运行。
cron的一些优点
以下是使用 cron 作业的一些优势:
- 您可以更好地控制您的作业何时运行,即您可以控制它何时执行的分钟、小时、日期等。
- 它消除了为任务的循环和逻辑编写代码的需要,您可以在不再需要执行作业时将其关闭。
- 作业在不执行时不会占用您的内存,因此您可以节省内存分配。
- 如果某个作业由于某种原因未能执行并退出,它将在适当的时候再次运行。
安装 cron 守护进程
幸运的是 Fedora Linux 预先配置为运行重要的系统任务以保持系统更新。 有几个实用程序可以运行任务,例如 cron、anacron、at 和批处理。 本文将只关注 cron 实用程序的安装。 Cron 与 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)的压缩名称。 要确定 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 start crond.service
要将服务配置为在引导时自动启动,请键入以下内容:
$ systemctl enable crond.service
如果出于某种原因,您希望停止 crond 服务的运行,请按如下方式使用 stop 命令:
$ systemctl stop crond.service
要重新启动它,只需使用重新启动命令:
$ systemctl restart crond.service
定义 cron 作业
cron配置
以下是 cron 作业的配置详细信息示例。 这定义了一个简单的 cron 作业来将 git master 分支的最新更改拉入克隆的存储库:
*/59 * * * * username cd /home/username/project/design && git pull origin master
有两个主要部分:
- 第一部分是“*/59 * * * *”。 这是计时器设置为每 59 分钟的地方。
- 该行的其余部分是命令,因为它将从命令行运行。
此示例中的命令本身包含三个部分:- 作业将作为用户“用户名”运行
- 它将更改为目录 /home/username/project/design
- git 命令运行以拉取 master 分支中的最新更改。
计时语法
如上所述,计时信息是 cron 作业字符串的第一部分。 这决定了 cron 作业运行的频率和时间。 它按顺序由 5 个部分组成:
- 分钟
- 小时
- 每月的一天
- 月
- 一周中的天
这是解释语法的更图形化的方式,可以在这里看到:
.---------------- minute (0 - 59) | .------------- hour (0 - 23) | | .---------- day of month (1 - 31) | | | .------- month (1 - 12) OR jan,feb,mar,apr … | | | | .---- day of week (0-6) (Sunday=0 or 7) | | | | | OR sun,mon,tue,wed,thr,fri,sat | | | | | * * * * * user-name command-to-be-executed
使用 星号
星号
可以用来代替数字来表示该位置的所有可能值。 例如,分钟位置的星号将使其每分钟运行一次。 以下示例可能有助于更好地理解语法。
* * * * * [command]
这个 cron 作业将每分钟运行一次:
*/5 * * * * [command]
斜线 (/) 表示多个分钟数 以下示例每小时运行 12 次,即每 5 分钟一次:
0 0 2 * * [command]
下一个示例将在每月的第二天午夜运行一次(例如,1 月 2 日凌晨 12:00、2 月 2 日凌晨 12:00 等):
使用 crontab 创建 cron 作业
Cron 作业在后台运行并不断检查 /etc/crontab 文件以及 /etc/cron.*/ 和 /var/spool/cron/ 目录。 每个用户在 /var/spool/cron/ 中都有一个唯一的 crontab 文件。
这些 cron 文件不应直接编辑。 crontab 命令是您用来创建、编辑、安装、卸载和列出 cron 作业的方法。
$ crontab -e
相同的 crontab 命令用于创建和编辑 cron 作业。 更酷的是,您无需在创建新文件或编辑现有文件后重新启动 cron。 这将打开您现有的 crontab 文件或在必要时创建一个。 vi 编辑器在调用 crontab -e 时默认打开。 注意:要使用 Nano 编辑器编辑 crontab 文件,您可以选择设置编辑
=纳米环境变量。
$ crontab -l $ crontab -u username -l
如果需要,使用选项 -l 列出所有 cron 作业并使用 -u 选项指定用户。
$ crontab -r
使用以下命令删除或清除所有的 cron 作业:
$ crontab -r -u username
要删除特定用户的作业,您必须以 root 用户身份运行以下命令:
感谢您的阅读。 cron 作业可能看起来像是系统管理员专用的工具,但它们实际上与多种 Web 应用程序和用户任务相关。
Fedora 参考 Linux 文档
自动化任务
[ad_2]