Cron 与 Anacron_ 如何在 Linux 上使用 Anacron 计划任务


在 Linux 世界中,计划任务是管理员需要定期执行的一项重要任务。这样做是为了自动化执行例行任务的过程,并确保它们在正确的时间执行。Linux 中用于计划任务的两种常用工具是:cron 和 anacron。这两种工具都具有自己独特的特性和优势。

在这篇博文中,我们将讨论 cron 和 anacron 之间的区别,然后我们将演示如何使用 anacron 在 Linux 系统上计划任务。

Cron 与 Anacron:有什么区别?

在我们学习如何使用 Anacron 计划任务之前,让我们先看看 Cron 和 Anacron 之间的区别。

Cron

Cron 是一个基于时间的作业调度程序,运行在类 Unix 操作系统上。它用于安排作业在特定时间或间隔运行。Cron 非常适合安排需要定期运行的作业,例如每小时、每天、每周或每月。Cron 是一个强大而灵活的工具,但它有一个主要限制。它假设系统始终运行,如果系统关闭或重新启动,任何计划的作业都不会执行。

Anacron

另一方面,Anacron 是一种类似 cron 的工具,其设计用于处理并非始终运行的系统。Anacron 非常适合定期关闭或重新启动的系统,例如笔记本电脑或台式机。Anacron 也可用于服务器,但对于需要在特定时间运行的作业,它不如 cron 高效。

Anacron 通过跟踪上次运行作业的时间来工作。然后,它根据配置文件中指定的间隔计算作业下次应运行的时间。如果在作业可以运行之前系统关闭或重新启动,Anacron 将在下一次系统启动时运行该作业。

在本教程中,我们将介绍如何在 Ubuntu 上安装和配置 Anacron,并演示如何使用 Anacron 安排作业。

使用 Anacron 计划任务

既然我们已经讨论了 cron 和 anacron 之间的区别,让我们来看看如何使用 anacron 在 Linux 系统上计划任务。我们假设您了解基本的 Linux 命令行。

步骤 1:安装 Anacron

第一步是确保 Anacron 已安装在您的 Linux 系统上。为此,打开终端窗口并键入以下命令:

sudo apt-get install anacron

此命令将在基于 Debian 的系统上安装 Anacron。如果您使用的是其他 Linux 发行版,则命令可能略有不同。

步骤 2:创建作业

下一步是创建一个我们想使用 Anacron 调度的作业。在这个例子中,我们将创建一个简单的 bash 脚本,它将当前日期和时间打印到一个文件中。打开文本编辑器并创建一个名为“myjob.sh”的新文件。将以下几行添加到文件中:

#!/bin/bash echo "The current date and time is $(date)" >> /var/log/myjob.log

保存文件并通过键入以下命令使其可执行:

chmod +x myjob.sh

步骤 3:配置 Anacron

下一步是配置 Anacron 来运行我们的作业。Anacron 使用名为“anacrontab”的配置文件来定义作业及其调度间隔。打开终端窗口并键入以下命令来编辑 anacrontab 文件:

sudo nano /etc/anacrontab

这将在 Nano 文本编辑器中打开 anacrontab 文件。“anacrontab”文件具有以下格式:

period delay job-identifier command

让我们仔细看看这些参数中的每一个:

  • 周期 - 周期参数指定两次连续运行作业之间的时间(以天为单位)。例如,如果您想每天运行一次作业,则将周期设置为 1。如果您想每周运行一次作业,则将周期设置为 7。

  • 延迟 - 延迟参数指定系统启动后 Anacron 在运行作业之前等待的时间(以分钟为单位)。如果您想错开作业的执行以避免在启动过程中使系统过载,则此参数很有用。默认延迟为 5 分钟。

  • 作业标识符 - 作业标识符参数是作业的唯一标识符。Anacron 使用此参数来跟踪哪些作业已经执行。每个作业的作业标识符都应该是唯一的,并且不应包含任何空格。

  • 命令 - 命令参数是在作业运行时将执行的命令。这可以是任何有效的 shell 命令、脚本或可执行文件。

将以下行添加到 anacrontab 文件的底部以定义我们的作业:

1 5 myjob /path/to/myjob.sh

此行定义了一个周期为 1 天,延迟为 5 分钟的作业。作业标识符为“myjob”,命令为“/path/to/myjob.sh”。这意味着 Anacron 将每天运行一次作业,如果在作业可以运行之前系统关闭或重新启动,Anacron 将在下一次系统启动时运行它,只要上次运行作业后至少经过 5 分钟。

保存 anacrontab 文件并退出文本编辑器。

步骤 4:测试作业

最后一步是测试作业以确保其正常工作。为此,打开终端窗口并键入以下命令:

sudo anacron -f

此命令将强制 Anacron 立即运行所有计划的作业。Anacron 还将运行由于系统关闭或重新启动而错过的任何作业。

检查 /var/log/myjob.log 文件以确保作业正确运行。您应该在日志文件中看到一行包含当前日期和时间的行。

使用 Anacron 安排作业

要使用 Anacron 安排作业,您需要在 /etc/anacrontab 配置文件中创建一个新条目。例如,假设您想安排一个作业,每 30 天删除旧日志文件。您将以下行添加到配置文件:

30 5 cleanup / usr/local/bin/cleanup-script.sh

此行指定 cleanup-script.sh 脚本将在系统启动后每 30 天延迟 5 分钟执行。此作业的作业标识符为“cleanup”。

添加条目后,保存配置文件并退出文本编辑器。

Anacron 将在下一次系统启动时以及此后每 30 天自动运行该作业。如果在计划时间内系统未开启,Anacron 将在下一次系统开启时运行该作业。

结论

在这篇博文中,我们讨论了 cron 和 anacron 之间的区别,并演示了如何使用 Anacron 在 Linux 系统上计划任务。Anacron 是一个用于在并非始终运行的系统(例如笔记本电脑或台式机)上计划任务的有用工具。Anacron 确保即使系统关闭或重新启动,只要配置文件中指定的延迟已过去,作业也会执行。使用 Anacron,您可以自动化例行任务并确保它们在正确的时间执行,而无需担心系统是否正在运行。

更新于:2023年6月23日

761 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告