跳转至

前提条件

  • 运行Rocky Linux的机器。
  • 知道如何使用您最喜欢的编辑器来修改命令行环境中的配置文件(这篇文章将使用 vi)。
  • 您已经了解了bash、 python 或其他脚本/编程工具的基础知识,并且想要自动运行脚本。
  • 您已经通过 ssh 连接到您的机器(它可以是 root 用户或普通用户,UID 大于 1000)
  • 我们认为你是一个很酷的人。

cron 介绍

GNU/Linux提供 cron 系统,这是一个基于时间的 cron 自动化流程的作业程序。 它是很简单,但却相当强大。 想要一个脚本或程序每天在 5 pm 运行? cron 可以做到。 cron的不同分支(或变量),具有相同的功能。 在这个文档中,使用 cronie ,版本为 1.5.2。 您可以点击 [here](https://github .com/cronie-cronie-cronie/cronie) 查找最新版本并更新日志。

cronie的描述

  • cronie -包名, Rocky Linux 默认包含cronie;
  • crontab -命令为每个用户保留 crontab (任务计划);
  • crond.service -cronie 的守护程序,您可以通过 systemctl 启动来管理守护进程 | 重启 | 停止 | 状态;
  • /etc/crontab -将cron 任务分配给不同的用户,通常我们更习惯于使用 crontab-e。 例如,如果您目前是以 root 用户身份登录, 输入 crontab -e 并在保存后您将在文件 /var/spool/cron/root 中看到特定的 cron 作业。
  • **/var/log/cron * ** -Cronie 的日志,默认情况下是日志旋转并以日期后缀结尾。 * 此表示通配符
  • anacron -cronie的一部分 关于 anacron 的更多信息,见 anacron - 自动命令。 关于 anacron 的更多信息,见 anacron - 自动命令

ceontab 命令

crontab 是安装cronie 软件包后获得的命令。 与 anacron, 它更适合于每天工作7*24小时的服务器。 crontab 的常见选项是:

-e # 编辑定时任务
-l # 查看定时任务
-r # 删除所有当前用户的 crontab任务

Cronie的使用

为了允许不同的用户在不同时间执行不同的命令(或脚本),他们可以写入这个文件。 然而,我们通常更习惯使用 crontab -e

shell > cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/usr/bin
MAILTO=root
# 详细信息见man 4 crontab
# 作业定义示例:
# 。
--------------- 分钟(0-59)
# | .------------ 小时 (0-23)
# | . ------------ 月份(1-31)
# | | .-------- 月 (1-12个月) 或 jan,feb,mar,apr ...
# | | | | . --- 每周一天(0-6) (unday=0 或 7) 或日,蒙,tue,wed,thu,fri,, 在
# | | | | | | |
# * * * * * 需要执行的用户名称命令
参数 含义 取值范围
1st* 一小时的第一分钟 0-59
2nd* 一天中的每小时 0-23
3rd* 月中的某一天 1-31
The 4th* 年度月 1-12
The 5th* 一周中的一天 0-7(0和7均表示周日)

在这个示例中,假定您作为根用户执行此操作。 输入以下内容: crontab -e, 这将提升根用户的定时任务 如果您使用 vi 作为默认系统编辑器, 按 i 键进入插入模式, 输入以下内容,# 表示这是一条注释行。 按 Esc 退出插入模式,请输入:wq (显示在底部) 保存并退出 vi这意味着每晚22:00时运行脚本。 显然,这是一个非常简单的例子,当你需要详细阐述时,情况可能变得非常复杂。

# 晚间10:00 备份系统
00 * * /usr/local/sbin/备份

!!! !!! tip "注意"

脚本需要先执行权限 (chmod +x`) 才能运行它。

复杂选项

迄今为止,讨论的内容是非常简单的选择,但是如何完成更复杂的定时任务?

# 假设你想要运行每10分钟备份脚本(可能不切实际,但它只是一个例子! ) 整天都是如此。 为此目的, 以下将写入:
* /10 * * * * /usr/local/sbin/backup
#如果你只想在星期一每10分钟运行一个备份怎么办。 星期三和星期五? :
* /10 * * 1,3,5 /usr/local/sbin/backup
# 除了星期六和星期天之外, 每天10分钟一次,如何备份?
* /10 *  *  * 1-5 /usr/local/sbin/backup
特殊符号 含义
* 代表任何时间。 例如,第一个是指任何分钟,第二个是指任何一小时
, 代表连续时间,例如"08,12,16***", 这意味着命令将在每天8:00、12:00和16:00执行一次
- 代表一个连续的时间范围,例如“05* * 1-6”, 这意味着一个命令将在星期一至星期六每天早上5点被执行
*/n 表示执行间隔的频率,例如"/10 * * * * " 表示每隔10分钟执行

!!! !!! tip "注意"

Cronie能够识别的最小时间单位为1分钟。 使用例如`30 4 1,15 * 5 command` 时, 它将使指挥部每个月第1和第15次运行,每星期五上午4时30分运行; 某些脚本或命令的输出信息将防止执行定时任务。 和输出重定向是必需的,例如`*/10 * * * /usr/local/sbin/backup &> /dev/null`

常见问答

  1. /etc/crontab 和 crontab -e , 两种方法之间是否有任何差异? crontab-e 不需要指定用户 (默认情况下使用当前登录的用户), /etc/crontab需要指定用户。
  2. 如果指定的命令或脚本没有正确执行,我应该怎么办? 检查/var/log/cron* 文件,使用 journalctl -u crond.service 来检查有关守护进程的信息,脚本是否有 x 权限等用于排除故障。
  3. 除了croni,还有什么样的cron变体? dcron , 最新版本是 4.5 (2011-50-01)。 fcron , 最新版本是 3.3.0 (dev, 2016-08-14)。 bcron , 最新版本是 0.11 (2015-08-12). bcron , 最新版本是 0.11 (2015-08-12). cronsun , 最新版本 0.3.5 (2018-11-20).

总结

对Rocky Linux桌面用户或系统管理员来说,cronie 是一个非常强大的工具。 它可以允许您自动执行任务和脚本,这样您就不必记住手动运行它们了。 虽然基本知识很简单,但实际任务可能很复杂。 关于 crontab 的更多信息,直到 crontab 手册页面。 您也可以简单地在互联网上搜索"crontab"。 这将为您提供大量的搜索结果,并帮助您提高crontab 表达式。

Author: 李天赐

Contributors: 史蒂文 斯本