毎月最後の土曜日のクローンアイテム

毎月最後の土曜日のクローンアイテム

毎月最後の土曜日に演劇スケジュールをつかみたいです。私は次のことを思い出しました。

45 23 22-28 * *  test $(date +\%u) -eq 6 && echo "4th Saturday"  && sh  /folder/script.sh 

これは正しいのですか、それともそれを変えなければなりませんか?最後の土曜日にのみ呼び出されるので、今はテストできません。アドバイスしてください。

毎月最後の日曜日については、次の内容がありますが、内容をよく理解していません。最初の部分は日曜日の24を提供し、その後-eqは7を提供します。これが何を意味するのかわかりません。

00 17  * * 0 [ $(cal -s | tail -2 | awk '{print $1}') -eq $(date | awk '{print $3}') ] && /folder/script.sh

前の土曜日に受け取るように上記の内容を編集できますか?

Romeoの助けを借りて、次の答えを得ました。

00 17 * * 6 [ $(cal -s | tail -2 | awk '{print $7}') -eq $(date | awk '{print $3}') ] && /folder/script.sh

ベストアンサー1

あなたのロジックは動作しません。毎月の最後の土曜日は29日、30日、または31日です。したがって、確認を実行する最良の方法は、毎週土曜日に実行し、その月の最後の7日であるかどうかを確認することです。

45 23 * * 6  sh  /folder/script.sh 

date次に、スクリプトに次のコンテンツを追加します(ここではGNU実装を想定しています)。

if [ "$(date -d "+7 day" +%m)" -eq "$(date +%m)" ]
then echo "This is not one of last 7 days in month.";exit
fi
<rest of your script>

cronの行に関しては、次のように開始するように編集する必要があります。

00 17  * * 6

(6は土曜日、0または7は日曜日を意味します)

おすすめ記事