5時間ごとに実行するようにクローンジョブを設定する方法

5時間ごとに実行するようにクローンジョブを設定する方法

以下のコードを使用して5時間ごとにクローンジョブを設定できますか?

0 */5 * * * script.sh

私のscript.shはいつ実行されますか?

  1. 0000、0500、1000、1500、2000、0100、0600、1100、1600、2100など...

または

  1. 0000、0500、1000、1500、2000、0000、0500、1000、1500、2000など...

この伝統的なアプローチでは、5時間ごとにクローンタスクを設定できない場合は、そのようなタスクを設定する他の方法はありますか?

ベストアンサー1

クローン操作は次のように指定されます。

0 */5 * * * script.sh

2番目のオプションでは、ジョブは20:00から00:00までの4時間間隔で実行されます。

試してみることができる5つの職業仕様があります。

0 0-20/5 1-31/5 * * script.sh
0 1-21/5 2-31/5 * * script.sh
0 2-22/5 3-31/5 * * script.sh
0 3-23/5 4-31/5 * * script.sh
0 4-19/5 5-31/5 * * script.sh

3番目のフィールドはその月の日付です。これにより、ジョブは5日間の倍数で毎月5時間ごとに完全に実行されます。他の月には、その月の最後のジョブ実行と新しい月の最初の実行との間の遅延が短すぎるという同じ問題があります。

大丈夫かもしれません。それ以外の場合は、5時間の遅延を含む無限ループでバックグラウンドジョブとしてジョブを実行することを検討できます。

#!/bin/sh

while true; do
    script.sh &
    sleep 18000   # 5h
done

上記はバックグラウンドで実行される制御スクリプトです。

多くの反復の後、明らかにわずかなドリフトが始まり、正確に時間通りに始めるのが難しいかもしれません。

別のアイデアは、次のようにスクリプト自体を再スケジュールすることですat

#!/bin/sh

echo script.sh | at now + 5 hours

# rest of script goes here.

おすすめ記事