Cron 与 Anacron:如何在 Linux 上设置 Anacron(示例)

举报
Tiamo_T 发表于 2021/09/07 08:59:26 2021/09/07
【摘要】 Anacron 是台式机和笔记本电脑的 cron。Anacron 不希望系统像服务器一样 24 x 7 全天候运行。当您希望在非 24 x 7 全天候运行的机器上自动执行后台作业时,您应该使用 anacron。例如,如果您将备份脚本安排在每天晚上 11 点作为常规 cron 作业,并且如果您的笔记本电脑在晚上 11 点未启动,您的备份作业将不会执行。但是,如果您在 anacron 中安排了相...

Anacron 是台式机和笔记本电脑的 cron。

Anacron 不希望系统像服务器一样 24 x 7 全天候运行。

当您希望在非 24 x 7 全天候运行的机器上自动执行后台作业时,您应该使用 anacron。

例如,如果您将备份脚本安排在每天晚上 11 点作为常规 cron 作业,并且如果您的笔记本电脑在晚上 11 点未启动,您的备份作业将不会执行。

但是,如果您在 anacron 中安排了相同的作业,则可以确保在笔记本电脑恢复后会执行该作业。

Anacrontab 格式

就像 cron 有 /etc/crontab 一样,anacron 有 /etc/anacrontab。

/etc/anacrontab 文件包含以下格式中提到的 anacron 作业。


period   delay   job-identifier   command

字段 1 是重复周期:这是一个指定天数的数值。

  • 1 – 每天
  • 7 – 每周
  • 30 – 每月
  • N – 这可以是任何数值。N 表示天数

注意:对于需要每月执行的作业,您还可以使用“@monthly”。

字段 2 是延迟:这表示以分钟为单位的延迟。即 anacron 在机器启动后执行作业之前应等待的 X 分钟数。

字段 3 是作业标识符:它是作业时间戳文件的名称。对于每项工作,它应该是唯一的。这将作为 /var/spool/anacron 目录下的文件提供。该文件将包含一行,指示上次执行此作业的时间。

# ls -1 /var/spool/anacron/
test.daily
cron.daily
cron.monthly
cron.weekly

# cat /var/spool/anacron/test.daily
20110507

字段 4 是命令:需要执行的命令或 shell 脚本。

就像 shell 脚本一样, anacrontab 文件中的注释以 # 开头

注意:对于 /etc/crontab 文件格式,请参阅我们的Linux Crontab:15 个很棒的 Cron 作业示例文章。

Anacron 示例

以下示例每 7 天执行一次 /home/sathiya/backup.sh 脚本。

在应该执行backup.sh作业的那天,如果系统因为某种原因宕机,anacron会在系统恢复后15分钟执行backup.sh脚本(无需再等待7天)。

# cat /etc/anacrontab 
7 15 test.daily /bin/sh /home/sathiya/backup.sh

START_HOURS_RANGE 和 RANDOM_DELAY

上面的例子表明backup.sh脚本应该每天执行,延迟15分钟。即当笔记本电脑启动时,仅在 15 分钟后执行。

当笔记本电脑或台式机没有关机时会发生什么?什么时候执行作业?这是由 /etc/anacrontab 文件中的 START_HOURS_RANGE 环境变量指定的。

默认情况下,这在文件中设置为 3-22。这表示从凌晨 3 点到晚上 10 点的时间范围

# grep START /etc/anacrontab 
START_HOURS_RANGE=3-22

除了在 /etc/anacrontab 文件的第二个字段中指定的用户定义延迟之外,anacron 还随机添加 x 分钟数。x 由 /etc/anacrontab 文件中的 RANDOM_DELAY 变量定义。

默认情况下,这在文件中设置为 45。这意味着 anacron 将添加 x 分钟(从 0 和 45 中随机选择),并将其添加到用户定义的延迟中。

# grep RANDOM /etc/anacrontab 
RANDOM_DELAY=45

Cron 与 Anacron

Cron 和 anacron 各有优缺点。根据您的要求,使用其中之一。

Cron Anacron
最小单位为分钟(即可以安排作业每分钟执行一次) 最小单位仅为天
任何普通用户都可以调度 Cron 作业(如果不受超级用户限制) Anacron 只能由超级用户使用(但有一些变通方法可以让普通用户使用它)
Cron 期望系统 24 x 7 全天候运行。如果计划了作业,并且系统在此期间停机,则不会执行作业。 Anacron 不希望系统 24 x 7 全天候运行。如果计划了一项作业,并且系统在此期间停机,它会在系统恢复时启动作业。
服务器的理想选择 台式机和笔记本电脑的理想选择
当必须在特定的小时和分钟执行作业时使用 cron 无论小时和分钟都必须执行作业时使用 anacron
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。