Linux 中的 at 命令及示例 - Linux 命令行教程
在 Linux 中,您可以使用各种命令自动化许多进程。您甚至可以自动化运行这些命令的过程。您可以使用 at 命令在将来的指定时间运行命令,否则它只会运行这些命令一次。您可以使用“明天”、“下周”等关键词指定时间。
您可能会认为 at 听起来类似于 cron – Linux 系统中内置的调度程序。 at 和 cron 之间的最大区别在于 at 只会运行一次,而 cron 用于按特定时间表重复运行事物。
在本教程中,我们将讨论 Linux 中 at 的常见应用及其一些选项,以帮助您最好地利用命令调度。在某些 Linux 发行版上,默认情况下可能不会安装此命令。在这种情况下,您需要手动安装它。我们将在下面提供相关说明。
在本教程中您将学习:
如何在主要 Linux 发行版上安装 at
如何在 Linux 上使用 at
在 Linux 中安装
如果默认情况下您的系统上尚未安装 at,您可以使用下面相应的命令通过系统的包管理器安装它。
要在 Ubuntu、Debian 和 Linux Mint 上安装 at:
$ sudo apt install at
要在 CentOS、Fedora、AlmaLinux 和 Red Hat 上安装 at:
$ sudo dnf install at
要在 Arch Linux 和 Manjaro 上安装 at:
$ sudo pacman -S at
常用选项
安装完成后,您可以开始使用它来安排将来要完成的作业。
Linux 中的 at 命令基本示例
作为一个基本示例,让我们使用 rm 命令在某个时间点(例如明天)删除文件或目录。但如果您是 Linux 新手,您可能会对 at 的工作原理感到非常困惑,因为它不是使用许多基本 Linux 命令的典型语法运行的。对于 at,您必须首先键入 at 命令本身,然后再键入其后的指定时间。然后,您将按
Enter
并在下面显示的提示中键入所需的命令。 at 还会警告命令将在哪个 shell 中运行。$ at tomorrow at> rm file01
输入命令后,您可以使用
Ctrl + Z
取消并停止 at 提示,也可以使用 Ctrl + D< 保存并确认作业/代码>。如果您想知道忘记了计划在多个不同时间执行的作业该怎么办,请不要担心。您可以使用
-l
选项和 at 在列表中自由查看所有作业。或者,您可以简单地运行atq命令来达到相同的效果。$ at -l
您可能已经注意到,使用 at 语法中的时间表达式(例如
tomorrow
或tuesday
),默认情况下会安排作业在那些日子里的当前时间。您可以通过多种方式进一步指定时间。在此示例中,我们在当前时间戳上额外添加 45 分钟。$ at tomorrow +45 minutes at> echo “hello”
我们还可以利用 at 直接指定要执行作业的确切时间。
$at tomorrow 3:30 at>echo “hello”
您还可以以与前面示例之一相反的方式指定执行作业的时间。我们可以确定确切的时间并从现在开始添加额外的天数,而不是像上面那样指定日期并从当前时间添加额外的时间。
$ at 3:45 +2 days at>echo “hello”
正如您所看到的,我们可以应用的时间规范可能会变得相当复杂,以满足您在各种情况下的需求。但我们还没有讨论最简单的应用程序;我们可以安排一个作业在当前时间后几分钟或几小时内执行。如果您不完全熟悉 at,那么这种语法有点违反直觉。您需要指定
now
,然后在其后添加分钟或小时。$ at now +15 minutes at>echo “hello”
要删除使用 at 安排的作业,您可以使用
-r
选项或 atrm 命令来达到相同的效果。为了使用此命令成功删除作业,您需要指定作业 ID。正如我们在前面的示例中所介绍的,at 可以与 -l 选项一起使用来显示您已安排的每个作业的列表。作业 ID 与作业的预计到达时间一起包含在列表中。例如:2021 年 9 月 9 日星期四 13 日 01:00:00
。本例中的作业 ID 为 13。$ at -r 13
注意
您始终可以使用 man 命令来阅读有关 at 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
高级用法
at 非常简单,但正如您在本文的示例部分中所观察到的,它包含很多选项。其中许多选项都不太引人注目,甚至一些经验丰富的系统管理员也可能不知道它们。然而,它们绝对可以在各种情况下派上用场。在本教程的这一部分中,我们将向您展示一些我们认为有用的鲜为人知的 at 选项。
Linux 高级示例中的 at 命令
如果您已为用户帐户配置了电子邮件地址,并且您的系统设置为能够发送电子邮件,则在成功执行预定命令后,at 将默认向用户发送电子邮件通知。如果您希望避免此过程,可以使用
-M
选项强制 at 推迟通知。请注意,这些命令行选项区分大小写,如果您键入小写的-m
,您将无法获得所需的功能。$ at -M at>echo “hello”
我们还可以将
-m
命令行选项传递给 at,以接收已执行作业的电子邮件通知,即使它不产生输出。$ at -m at>echo “hello”
结束语
在本教程中,我们学习了有关 Linux 中 at 的所有内容。对于经常需要安排将来执行的命令的用户和管理员来说,掌握 at 至关重要。对于重复执行命令,您始终可以使用 cron。否则,对于一次性使用,at 是完成这项工作的完美工具。