毎日1時間ずつcronjobを起動する方法は?

毎日1時間ずつcronjobを起動する方法は?

毎日クローン作業を開始する必要がありますが、毎日1時間ずつ遅く開始する必要があります。今年の日を除いて、今まで私が持っていたもののほとんどはうまくいきます。

0 0 * * * sleep $((3600 * (10#$(date +\%j) \% 24))) && /usr/local/bin/myprog

日付が365の場合は5時に作業が始まりますが、翌日(うるう年を除く)にはその年の日付が1になるため、1時に作業が始まります。この極端な状況からどのように外れますか?

ベストアンサー1

私が好む解決策は毎時間作業を始めますが、スクリプト自体で実行する時間であることを確認してから、25回のうち24回は何もせずに終了することです。

予約されたもの:

0 * * * *    /usr/local/bin/myprog

myprog:

[ 0 -eq $(( $(date +%s) / 3600 % 25 )) ] || exit 0

スクリプト自体を変更したくない場合は、「実行時間」チェックをcrontabエントリに入れることもできますが、これを行うと長くて見苦しい行が表示されます。

0 * * * *    [ 0 -eq $(( $(date +\%s) / 3600 \% 25 )) ] && /usr/local/bin/myprog

おすすめ記事