遅延/オフセットcrontab * / xは特定の時間をスケジュールします。

遅延/オフセットcrontab * / xは特定の時間をスケジュールします。

4日ごとにスクリプトを実行します。

0 */96 * * * /path/to/script.sh

しかし、これを取り戻して4日ごとに2番目のスクリプトを実行できますが、最初のスクリプトとは2日間間隔を置きたいと思います。だから最終結果は

Script 1
wait 2 days
Script 2
wait 2 days
Script 1
wait 2 days
Script 2

この種の予約の構文はありますか?私はそれが次のようになると想像しています。

0 48+*/96 * * * /path/to/script2.sh

答え1

私はcrontabで日付セレクタとタイムセレクタを拡張する方法がないと思います。月/週/日モデルをきれいに処理する方法もありません。

最も簡単な方法は、仕事のスケジュールをとりすぎて「今日がその日か」を確認するように求めることです。ジョブを変更できない場合は、適切なスクリプトでラップしてください。 crontabコマンドラインで日付検証を処理するのは最後の手段です。

Bashのチェックインは、エポックの後の秒を取得し、日数に変換し、モジュロチェックを実行します。系列の2つの基準日に応じて、4日系列(0、1、2、3)を一度に手動で校正する必要があります。

Paul--) cat day4
#! /bin/bash

Day=$(( $( date '+%s' ) / 86400 ))

(( Day % 4 == 0 )) || exit 0

printf 1>&2 'Starting task for day %d (%d)\n' "${Day}" "$(( Day % 4 ))"

Paul--) ./day4
Starting task for day 18416 (0)
Paul--) 

関連情報