Cron 与 Anacron:如何在 Linux 上设置 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 |
- 点赞
- 收藏
- 关注作者
评论(0)