Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/gemstones/https_rsa_keygen.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ fi
* 接下来,脚本创建CSR(Certificate Signing Request,证书签名请求),然后可以使用它从提供商那里购买SSL证书。
* 最后,清理步骤删除了先前创建的带有密码的密钥。
* 输入不带参数的脚本名将生成错误:“需要密钥名称参数”。
* 此处使用位置参数变量,即 $n。 其中,$0表示命令本身,$1到$9表示第一到第九个参数。 当数字大于10时,需要使用大括号,如${10}
95 changes: 47 additions & 48 deletions docs/guides/automation/anacron.zh.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
---
title: anacron - 自动化命令
author: tianci li
contributors: Steven Spencer
author: 李天赐
contributors: 史蒂文 斯本
update: 2021-10-20
---

# anacron- 定期运行命令
# anacron - 定期执行命令工具

## 前提条件
## 先决条件

* 一台运行 Rocky Linux 的机器
* 知道如何在命令行环境下使用您喜欢的编辑器修改配置文件(例如 *vim*
* 了解基本的RPM包管理
* 运行Rocky Linux的机器
* 知道如何使用您最喜欢的编辑器来修改命令行环境中的配置文件(例如 *vim*)
* 了解基本RPM软件包管理

## 假设
## 前提条件

* 您已了解 bash、python 或其他脚本/编程工具的基本知识,并希望自动运行脚本
* 您已以 root 用户身份登录,或者用`su - root`切换到root
* 您已经了解了bash、 python 或其他脚本/编程工具的基础知识,并且想要自动运行脚本
* 您已经以 root 用户的身份登录,或者使用 `su 切换到 root`

## anacron简介
## Anacron 介绍

**anacron用于定期运行命令,运行频率以天为单位进行定义,它适用于在笔记本电脑和台式机等不会全天候7*24运行的计算机上。假设您有一个计划的任务(比如备份脚本)要在每天凌晨使用crontab运行,当您睡着的时候,此时您的台式机/笔记本电脑已经关闭。您的备份脚本将不会执行。但是,如果您使用anacron,您可以放心,下次再次打开台式机/笔记本电脑时,将执行备份脚本。**
**anacron 用于定期运行命令,操作频率以天为单位确定。 它适合于不运行24/7的计算机,如笔记本和台式计算机。 假定您有一个预定的任务(例如备份脚本)将在每天早上使用 crontab运行。 当您睡觉时,您的桌面/笔记本电脑将被关闭。 您的备份脚本将不会被执行。 但是,如果您使用anacron,您可以放心,下次打开桌面/膝上型电脑时,备份脚本将会被执行。**

anacron的出现并不是取代crontab,而是与crontab相互补充。它们的关系如下图
Anacron 并不是取代crontab,而是对crontab的一种补充。 它们的关系如下

![Relations](../images/anacron_01.png)
![ 相关内容 ](../images/anacron_01.png)

## anacron配置文件
## 配置文件

```bash
shell > rpm -ql cronie-anacron
Expand All @@ -44,41 +44,40 @@ shell > rpm -ql cronie-anacron
/var/spool/anacron/cron.weekly
```

首先查看默认的配置文件
首先检查默认配置文件
```bash
shell > cat /etc/anacontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=/sbin:/usr/sbin:/bin
MAILTO=root
# 默认45分钟,指定anacron中每个作业的延迟将随机增加0到45分钟
# 每个指定作业的默认45分钟延迟随机增加0-45分钟
RANDOM_DELAY=45
# 指定工作的时间范围,这里表示3:00~2200
# 指定工作时间范围 在这里代表 3:00~22:00
START_HOURS_RANGE=3-22
# period in days delay in minutes job-identifier command
# 每天开机5分钟后就检查 /etc/cron.daily 目录内的文件是否被执行,如果今天没有被执行,那就执行下一个
1 5 cron.daily nice run-parts /etc/cron.daily
# 每隔7天开机后25分钟检查 /etc/cron.weekly 目录内的文件是否被执行,如果一周内没有被执行,就会执行下一个
7 25 cron.weekly nice run-parts /etc/cron.weekly
# 每隔一个月开机后 45 分钟检查 /etc/cron.monthly 目录内的文件是否被执行
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
# 几天内延迟作业标识符命令
# 每天启动来检查目录/etc/cron中的文件。 每日执行在5分钟内, 如果今天没有执行, 则执行到下一个
1 5 cron.daily run-part /etc/cron。 每日
# 25分钟内每7天检查/etc/cron。 eekly 目录是在启动后执行的,如果不是在一个星期内执行,它将在下一个
7 25 cron.weekly run-part /etc/cron执行。 eekly
# 目录/etc/cron中的文件。 每次开始后每个月进行45分钟的一次检查
@monthly 45 cron.monthly nice run-part /etc/cron.monthly
```

**/etc/cron.hourly/** - 通过`journalctl -u crond.service`可以知道,放入到里面的文件其实是被crond.server调用,表示每小时的第一分钟后开始执行命令。如下所示
**/etc/cron.hourly/** -通过 `journalctl -u crond. ervice`, 你可以知道放在内面的文件实际上被crond调用。 因为这意味着命令将在每小时第一分钟后执行。 例如

```bash
shell > cat /etc/cron.d/0hourly
# Run the hourly jobs
# 运行每小时作业
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=/sbin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
01* * * root run-parts /etc/cron.hourly
```
```
shell > journalctl -u crond.service
- Logs begin at Wed 2021-10-20 19:27:39 CST, end at Wed 2021-10-20 23:32:42 CST. -
October 20 19:27:42 li systemd[1]: Started Command Scheduler.
- Logs begin at Wed 2021-10-20 19:27:39 CST, end at Wed 2021-10-2023:32:42 CST. October 20 19:27:42 li systemd[1]: Started Command Scheduler.
October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2)
October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.)
October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support)
Expand All @@ -89,28 +88,28 @@ October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly)

```

更多配置文件信息,请[浏览手册页](https://man7.org/linux/man-pages/man5/anacrontab.5.html)
欲了解更多配置文件信息,请 [浏览手册页面](https://man7.org/linux/man-pages/man5/anacrontab.5.html)

## 用户使用

为了使某些文件在这些自动定义的时间内运行,您所需要做的就是将脚本文件复制到相关目录中,并确保其拥有**x执行权限chmod +x)**。因此,您只要让系统在这些预定时间之一自动运行脚本就可以了,这使自动化任务变得非常容易
为了使某些文件在这些自动定义的时间内运行。 您需要做的只是复制脚本文件到相关的目录,并确保它拥有** x执行权限 (chmod +x) ** 。 因此,您只需要让系统在这些预定时间其中之一的时间自动运行脚本,这使自动化任务非常容易

我们用 cron.daily 工作来说明一下 /etc/anacrontab 的执行过程:
让我们每天使用 cron.day来说明/etc/anacrontab的执行过程:

1. anacron读取 **/var/spool/anacron/cron.daily** 文件,文件内容显示为上一次执行的时间
2. 和当前的时间比较,如果两个时间的差值超过 1 天,就执行 cron.daily 工作
3. 只能在 0300-22:00 执行这个工作
4. 开机5分钟检查有文件是否被执行,当执行第一个后,再随机延迟 0~45 分钟执行下一个
5. 使用 nice 参数指定默认优先级,使用 run-parts 参数执行 /etc/cron.daily/ 目录中所有的可执行文件
1. Anacron 读取** /var/sool/anacron/cron.day** 文件,文件的内容显示最后一次执行的时间
2. 与当前时间相比,如果两次之间的差额超过1天,则每日工作将被执行
3. 此工作只能在 03:00-22:00进行
4. 检查一个文件是否在系统启动后5分钟内执行。 当第一个执行时,将会随机延迟0~45分钟来执行下一个
5. 使用好参数来指定默认的优先级,并使用运行器参数来执行/etc/cron.daily/目录中的所有可执行文件

## 相关命令
## 命令相关的

使用到的命令 `anacron`,常用选项有
使用命令 `anacron`, 通常使用的选项有

|选项|说明|
|---|---|
|-f |执行所有的作业,忽略时间戳|
|-u|不执行任何作用的情况下更新时间戳为当前时间|
|-T|测试配置文件/etc/anacrontab的有效性|
| 选项 | 说明 |
| -- | -------------------------- |
| -f | 执行所有作业,忽略时间戳 |
| -u | 将时间戳更新到当前时间,而不执行任何操作 |
| -T | 测试配置文件/etc/anacrontab 的有效性 |

更多帮助信息,请[浏览手册页](https://man7.org/linux/man-pages/man8/anacron.8.html)
欲了解更多帮助信息,请 [浏览手册页面](https://man7.org/linux/man-pages/man8/anacron.8.html)
Loading