我想使用 来安排作业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运行过去的作业?