前提条件¶
- 运行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`
常见问答¶
- /etc/crontab 和
crontab -e
, 两种方法之间是否有任何差异?crontab-e
不需要指定用户 (默认情况下使用当前登录的用户), /etc/crontab需要指定用户。 - 如果指定的命令或脚本没有正确执行,我应该怎么办? 检查/var/log/cron* 文件,使用
journalctl -u crond.service
来检查有关守护进程的信息,脚本是否有 x 权限等用于排除故障。 - 除了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: 史蒂文 斯本