`At` запускает команду позже, если компьютер выключен в указанное время?

20

Я хочу запланировать задания с помощью at, но я не уверен, что произойдет, если компьютер будет приостановлен в указанное время: выполнится ли команда, как только компьютер снова anacronвключится (как с помощью ), или она не будет выполнена вообще (как с cron)?

Если вы укажете задание, которое будет обязательно выполняться в определенное время и в прошлом, задание будет выполнено как можно скорее.

Об этом говорится в справочной странице, однако это не совсем соответствует моему случаю: я не хочу указывать задание, которое нужно выполнить в прошлом, я хочу запустить его в будущем и спросить, как с ним atработать, если компьютер спит тогда.

Это не дубликат команды « Выполнить при», когда компьютер находится в спящем режиме, потому что этот вопрос задает вопрос, активирует ли atкомпьютер выполнение команды, и не является ли он дубликатом « Как предотвратить выполнение atd последних заданий?». потому что речь идет о том, как предотвратить atвыполнение этих «старых» заданий (хотя с очень хорошим ответом!).

Десерт
источник

Ответы:

20

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 запускать задание в прошлом?

Десерт
источник