如果计算机在指定时间关闭,“at”是否会稍后运行命令?

如果计算机在指定时间关闭,“at”是否会稍后运行命令?

我想使用 来安排作业at,但我不确定如果计算机在指定时间挂起会发生什么:计算机再次唤醒后会立即执行该命令(如使用anacron)还是根本不会执行该命令(就像cron)?

如果您指定作业绝对在过去的特定时间和日期运行,则该作业将尽快运行。

这就是联机帮助页所说的内容,但是它与我的情况不太相符:我不想指定过去运行的作业,我想在将来运行它并询问at如果计算机将如何处理它那时正在睡觉。

这不是重复的计算机睡眠时按命令运行因为这个问题问是否at会唤醒计算机来执行命令,所以它也不是重复的如何防止atd运行过去的作业?因为这是关于如何防止at执行那些“旧”作业(不过有一个非常好的答案!)。

答案1

at执行唤醒计算机之前应执行的任何命令,但可能需要几分钟才能完成。你是否给予它并不重要具体的日期,您可以轻松测试:

$ sudo date -s "2017-12-15 23:57:00"
$ at 23:59 17-12-15 <<<'echo executed >at_test'
job 1 at Fri Dec 15 23:59:00 2017
# suspend, wake after four minutes
$ date
Sat Dec 16 00:01:17 CET 2017
$  cat <at_test || atq
bash: /home/dessert/at_test: No such file or directory
1       Fri Dec 15 23:59:00 2017 a dessert
# wait a few minutes
$  cat <at_test || atq
executed

因此,您使用添加的作业at 20:00 today很可能会在三天后当您再次打开计算机时突然执行。如果您想防止这种情况发生,您可以检查作业本身的时间,如下所示:如何防止atd运行过去的作业?

相关内容