Cron 与 Anacron:如何在 Linux 上使用 Anacron 安排作业
在本文中,我们将解释 cron 和 anacron,并向您展示如何在 Linux 上设置 anacron。我们还将对这两个实用程序进行比较。
要在给定时间或稍后时间安排任务,您可以使用“at”或“batch”命令,并设置命令重复运行,您可以使用 < cron 和 anacron 设施。
Cron – 是一个守护进程,用于运行计划任务,例如系统备份、更新等。它适合在服务器等24X7连续运行的机器上运行计划任务。
命令/任务被编写到 crontab 文件中安排的 cron 作业中。默认的系统 crontab 文件是 /etc/crontab,但每个用户也可以创建自己的 crontab 文件,该文件可以在用户定义的时间启动命令。
要创建个人 crontab 文件,只需键入以下内容:
crontab -e
如何在 Linux 中设置 Anacron
Anacron 用于以天为单位定期运行命令。它的工作方式与 cron 略有不同;假设机器不会一直通电。
它适用于在不会 24-7 运行的计算机(例如笔记本电脑和台式机)上运行通常由 cron 运行的每日、每周和每月计划作业。
假设您有一个计划任务(例如备份脚本)要在每天午夜使用 cron 运行,可能是在您睡觉时,并且您的台式机/笔记本电脑那时已关闭。您的备份脚本将不会被执行。
但是,如果您使用anacron,则可以放心,下次再次打开台式机/笔记本电脑时,将执行备份脚本。
Anacron 如何在 Linux 中工作
anacron 作业列在 /etc/anacrontab 中,并且可以使用以下格式安排作业(anacrontab 文件内的注释必须以 # 开头)。
period delay job-identifier command
由上面的格式可知:
- period – 这是以天为单位指定的作业执行频率,或者以 @daily、@weekly 或 @monthly 的形式指定每天、每周或每月一次。您还可以使用数字:1 – 每天、7 – 每周、30 – 每月和 N – 天数。
- 延迟 – 执行作业之前等待的分钟数。
- job-id – 它是写入日志文件中的作业的独特名称。
要查看示例文件,请键入:
ls -l /var/spool/anacron/
total 12
-rw------- 1 root root 9 Jun 1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
- 命令 – 这是要执行的命令或 shell 脚本。
这就是实际发生的情况:
- Anacron 将检查作业是否已在 period 字段中指定的时间内执行。如果没有,则在等待延迟字段中指定的分钟数后执行命令字段中指定的命令。
- 执行作业后,它会将日期记录在 /var/spool/anacron 目录中的时间戳文件中,并使用 job-id(时间戳文件名)字段中指定的名称。
现在让我们看一个例子。这将每天运行 /home/aaronkilik/bin/backup.sh 脚本:
@daily 10 example.daily /bin/bash /home/aaronkilik/bin/backup.sh
如果在 backup.sh 作业预计运行时机器已关闭,anacron 将在机器开机后 10 分钟运行它,而无需再等待 7 天。
您应该了解 anacrontab 文件中有两个重要变量:
- START_HOURS_RANGE – 设置作业启动的时间范围(即仅在以下时间执行作业)。
- RANDOM_DELAY – 这定义了添加到用户定义的作业延迟的最大随机延迟(默认为 45)。
这就是您的 anacrontab 文件可能的样子。
/etc/anacrontab: configuration file for anacron
See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
These replace cron's entries
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
@daily 10 example.daily /bin/bash /home/aaronkilik/bin/backup.sh
以下是 cron 和 anacron 的比较,以帮助您了解何时使用它们。
- It’s a daemon
它不是守护进程
- Appropriate for server machines
适用于台式机/笔记本电脑
- Enables you to run scheduled jobs every minute
仅允许您每天运行计划作业
- Doesn’t executed a scheduled job when the machine if off
如果在计划作业到期时机器关闭,则下次开机时将执行计划作业
- Can be used by both normal users and root
除非另有说明,否则只能由 root 使用(为具有特定配置的普通用户启用)
cron 和 anacron 之间的主要区别在于,cron 在连续运行的机器上有效工作,而 anacron 的目的是对于将在一天或一周内关闭的机器。
如果您知道其他方式,请使用下面的评论表与我们分享。