ATGが過去のタスクを実行するのを防ぐ方法は?

ATGが過去のタスクを実行するのを防ぐ方法は?

atデーモンは素晴らしいツールです!ただし、ジョブが午前 8 時にスケジュールされ、その時点でコンピュータの電源がオフになっている場合、コンピュータが起動するたびにジョブが実行されます。私がやりたいことは、時間が経つにつれてジョブの実行を停止することです。マニュアルページとオンラインを検索しましたが、回答がないか見つかりませんでした。私はArchを使用していますが、私が知っている限り、ディストリビューション全体で非常に似ています。

どんな助けでも大変感謝します!

答え1

職業はいつ過去の職業になるか? 7時59分50秒でシステムの電源を入れ、atデーモンが起動したらジョブ8:00:01を実行する必要がありますか?デーモンが7時59分59分に始まりますが、すべてのファイルを読み取るのに2秒かかる場合はどうなりますか?

あなたが決めてください!作業の開始時に時間を確認し、時間が経つと作業を中止してください。

export execute_by_date=$(date +%s 'tomorrow 8:01')
at tomorrow 8:00
[ "$(date +%s)" -le "$execute_by_date" ] || exit
do_stuff

答え2

シャットダウンまたは再起動時にスケジュールされたすべてのジョブをキャンセルする初期化スクリプトを作成できます。

Arch-Linuxについてはよくわかりません。/etc/sysconfig/at似たようなものはありますか?たぶん、反転する必要がある設定スイッチです。

答え3

cronデーモンに投票します。

毎日同じ時間ではなく特定の時間に実行する必要がある場合は、1日の範囲エントリと特定の実行時間を使用してcrontabを作成します。

以下から取得したいくつかの例crontab(5)

# run five minutes after midnight, every day
5 0 * * *       command
# run at 2:15pm on the first of every month
15 14 1 * *     command
# run at 10 pm on weekdays
0 22 * * 1-5    command

答え4

あなたが望むのはcronデーモンです。それはあなたが要求したことを正確に行います。

お気に入りの検索エンジンにフィードを提供スケジュールされたジョブデーモンマニュアルと指示がたくさんあります。man cronまた、man crontab非常に役立ちます。

関連情報