2017-08-18 10 views
0

17日が平日の場合にのみ毎月17日に実行するようにシェルスクリプトをスケジュールします。しかし、17日が週末になると、前回の金曜日にスクリプトを実行したいと思います(例えば、17日が土曜日の場合は16日金曜日にスクリプトを実行したい、17日が日曜日の場合はスクリプトを実行したい第15金曜日のスクリプト)。私は、cronのを模索しているが、私は、これは私はこれが唯一の私はその週末ならば、それは実行されません推測し、その平日ならば17日にスクリプトを実行すると信じ平日は週末でスケジュールスクリプトは週末なら金曜日に実行

00 08 17 * 1-5 <script to be run> 

を動作することを確認していません。

月の17日が週末の場合は、金曜日にスクリプトを実行するにはどうすればよいですか?あなたの設定として、平日に
1を実行し、すべての17:

+0

いいえ、 [00 08 17 * 1-5](https://crontab.guru/#00_08_17_*_1-5)は、毎週17日*と*日に実行されます。あなたのスケジュールはcronでサポートされていません。毎週金曜日に実行されるcronスケジュールと追加のロジックを組み合わせる必要があります。 –

答えて

0

あなたはcronジョブを使用する場合は、2 cronsを使用する必要があります毎週金曜日

00 08 17 * 1-5 <script to be run> 

2.ファイル名を指定して実行し、次のSartuday /日曜日の場合は、実行します17th:

00 08 * * 5 CURR=$(date) && NEXT_SAR=$(date -d "$CURR 24 hours" +'%d') && NEXT_SUN=$(date -d "$CURR 48 hours" +'%d') && [[ "$NEXT_SAR" == "17" || "$NEXT_SUN" == "17" ]] && <script to be run> || echo 'Do not run' 

このヘルプが欲しいです!

0

@TuanBA & @Christian Pekelerご協力いただきありがとうございます。

私は以下を動作させることができました。これを実現するにはより良い方法があるかどうかをご提案ください。

このスクリプトは、15日または16日が金曜日または17日が平日の場合に実行され、いずれの日付とも一致しない場合は終了します。私は15日16日と17日に実行するようにcronを使用する予定です。

!/ binに/ bashの

DOM = (date +%d) ダウ= (date +%u)

& & [15 -eq $のDOM]の場合、[$ダウ-eq 5] その後、 ビン/ SH /これ//thepath/tothescript/test.sh

ある

のelif [16 -eq $のDOM] & & [$ダウ-eq 5]そしてビン/ /This/is/thepath/tothescript/test.sh SH

のelif

& & [17 -eq $のDOM] [$ダウ-le 5] その後、 ビン/ SH /これ/ある/ thepath/tothescript/test.sh他

終了

Fiの

関連する問題