web-dev-qa-db-ja.com

指定された時間にコンピューターの電源が入っていない場合、 `at`は後でコマンドを実行しますか?

atを使用してジョブをスケジュールしたいのですが、指定した時間にコンピューターがサスペンドされた場合、どうなるかわかりません。コンピューターが再び起動するとすぐにコマンドが実行されますか(anacron)または(cronのように)まったく実行されませんか?

過去の特定の日時に絶対的に実行するジョブを指定すると、そのジョブはできるだけ早く実行されます。

それがマンページに書かれていることですが、私の場合とは完全に一致しません。過去に実行するジョブを指定したくないので、将来実行したいのですが、atコンピュータがその時眠っているならそれを扱います。

これは コンピューターのスリープ時にコマンドで実行 の複製ではありません。この質問は、atがコンピューターをウェイクアップしてコマンド、これは atdが過去のジョブを実行しないようにする方法ですか? これはatが実行されないようにする方法に関するものであるためですそれらの「古い」仕事(ただし、非常に良い答えがあります!)。

20
dessert

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を使用して追加したジョブは、コンピュータの電源を再度オンにした3日後に突然実行される可能性があります。これを回避したい場合は、ここで提案されているようにジョブ自体の時間を確認できます。 atdが過去のジョブを実行しないようにする方法

20
dessert