Czy `at` uruchamia polecenie później, jeśli komputer jest wyłączony o określonej godzinie?

20

Chcę zaplanować zadania z at, ale nie jestem pewien, co się stanie, jeśli komputer zostanie zawieszony w określonym czasie: czy polecenie zostanie wykonane, gdy komputer ponownie się obudzi (jak przy pomocy anacron), czy nie zostanie w ogóle wykonane (jak z cron)?

Jeśli określisz zadanie do absolutnego uruchomienia o określonej godzinie i dacie w przeszłości, zadanie zostanie uruchomione jak najszybciej.

Tak mówi o tym strona podręcznika, jednak nie do końca pasuje do mojego przypadku: nie chcę określać zadania do uruchomienia w przeszłości, chcę go uruchomić w przyszłości i zapytać, jak atgo potraktować, jeśli komputer śpi wtedy.

Nie jest to duplikat polecenia Uruchom podczas, gdy komputer śpi, ponieważ pytanie to dotyczy tego at, czy obudzi komputer w celu wykonania polecenia, ani nie jest duplikatem Jak zapobiec uruchamianiu przez ATD poprzednich zadań? ponieważ chodzi o to, jak zapobiec atwykonywaniu tych „starych” zadań (z bardzo dobrą odpowiedzią!).

deser
źródło

Odpowiedzi:

20

atwykonuje dowolne polecenie, które powinno być wykonane wcześniej, gdy budzisz komputer, ale może to potrwać kilka minut. Nie ma nawet znaczenia, czy podałeś mu konkretną datę, ponieważ możesz łatwo przetestować:

$ 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

Tak więc zadanie, które dodajesz, at 20:00 todaymoże być bardzo dobrze wykonane nagle trzy dni później, kiedy ponownie włączysz komputer. Jeśli chcesz temu zapobiec, możesz sprawdzić czas w samym zadaniu, jak zaproponowano tutaj: Jak zapobiec uruchamianiu poprzednich zadań przez ATD?

deser
źródło