克朗一切都很好,但不要忘记它的表弟at
。
当我第一次开始使用Linux时,就像被扔到UNIX池的深层。预计您将大量使用命令行以及分发版附带的所有标准实用程序和服务。从那时起,如今情况发生了很大变化,如今,您可以使用标准的Linux桌面,而无需打开终端或使用旧的UNIX服务。如今,即使作为系统管理员,您也往往在其中一些核心服务之上有几层抽象。
我说所有这些都是为了指出,对于我们的老手来说,很容易想当然地认为我们周围的每个人天生就知道我们使用的所有命令行工具。但是,即使我已经使用Linux 20年了,我仍然一直在学习新的(对我而言)命令行工具。在这个“返璞归真”文章系列中,我计划介绍一些Linux新手可能从未使用过的命令行工具。对于那些比较高级的人,我将分发本系列文章,因此您可以期望以后的文章更具技术性。在本文中,我描述了如何使用该at
实用工具来安排作业在以后运行。
at
与Cronat
是那些讨论不多的命令之一。当人们谈论调度命令时,通常cron获得最大的覆盖范围。Cron允许您安排要定期运行的命令。使用cron,您可以每分钟,每天,每周,每月甚至每年一次频繁地运行命令。您还可以定义更复杂的规则,因此命令例如每五分钟,每工作日,每隔一小时和许多其他组合运行。系统管理员有时会使用cron来计划本地脚本,以每分钟收集一次指标或计划备份。
另一方面,尽管该at
命令还允许您计划命令,但它的用途与cron完全不同。使用cron可以安排命令定期运行,而at
可以安排在将来的特定时间仅运行一次的命令。这意味着at
可以满足cron的不同需求,并且通常更为直接。
at
at
有时 ,该命令是大多数Linux发行版中的标准命令,但是如今,即使在服务器上,您也可能发现自己必须at
明确安装该软件包。安装后,最简单的使用方法at
是在命令行中键入它,然后是您希望命令运行的时间:
$ at 18:00
该at
命令还可以接受许多不同的时间格式。例如,它可以理解AM和PM以及诸如“明天”之类的单词,因此您可以将上面的命令替换为相同的命令:
$ at 6pm
而且,如果您想在明天那个时候运行相同的命令,请执行以下操作:
$ at 6pm tomorrow
按下Enter键后,您将进入一个交互式外壳:
$ at 6pm tomorrowwarning: commands will be executed using /bin/shat>
在交互式外壳程序中,您可以输入当时要运行的命令。如果要运行多个命令,请在每个命令后按Enter,然后在新at>
提示符下键入命令。输入命令完成后,在空白at>
提示下按Ctrl-D 退出交互式外壳。
例如,假设我注意到一台特定的服务器在过去两天的凌晨5:10大约五分钟内出现问题,到目前为止,我在日志中什么都没有看到。虽然我能醒得早,并登录到服务器,而不是我可以写一个简短的脚本,从收集的数据ps
,netstat
,tcpdump
等命令行工具了几分钟,所以当我醒来时,我可以走了过来数据它收集了。由于这是一次性的,所以我不想使用cron来安排某些事情,并且冒险将其遗忘并每天运行,所以我将用以下方法进行设置 at
:
$ at 5:09am tomorrowwarning: commands will be executed using /bin/shat>at> /usr/local/bin/my_monitoring_script
然后按Ctrl-D,外壳将退出并显示以下输出:
at> <EOT>job 1 at Wed Sep 26 05:09:00 2018
at
工作计划好at
作业后,能够拉出at
队列中所有作业的列表非常有用,这样您就可以知道正在运行的内容和时间。该atq
命令列出当前at
队列:
$ atq1 Wed Sep 26 05:09:00 2018 a kyle
第一列列出了at
分配给每个作业的编号,然后列出了作业将运行的时间以及用户的运行时间。假设在上面的示例中,我意识到我犯了一个错误,因为我的脚本无法以普通用户身份运行。在这种情况下,我想使用 atrm
命令删除作业编号1:
$ atrm 1
如果我要atq
再次运行,我会发现该作业不再存在。然后,我可以sudo
启动并使用at
命令重新安排作业。
at
一线尽管at
支持交互模式,但是您也可以将命令通过管道传递给所有命令。因此,例如,我可以使用以下命令安排上述工作:
$ echo /usr/local/bin/my_monitoring_script | at 5:09am tomorrow
如果您不知道这种情况的at
存在,您可能会发现自己想出了各种复杂而费解的方法来安排一次性工作。更糟的是,您可能需要设置一个闹钟,以便可以更早地唤醒并登录到问题服务器。当然,如果您没有闹钟,可以使用at
:
$ echo "aplay /home/kyle/alarm.wav" | at 7am tomorrow
评论专区