以前 Mac の cron で、第 x ・ y 曜日の z 日前に処理を実行する方法について書いた。
[Mac] cron で第 x ・ y 曜日の z 日前に処理を実行する|荒川仁志
https://note.com/hitoshiarakawa/n/neb5db3b3f541
同じ「第 x ・ y 曜日の z 日前」を Raspberry Pi で実行しようとすると、cron の記述を変更する必要がある。
環境:Raspberry Pi 4 Model B 8GB(Bookworm Desktop 64-bit)
Mac で -v オプションを使っていたところを、-d(–date)オプションに書き換える。(上のリンクで、-j オプションを付けていたが、Mac でも Raspberry Pi でも -j オプションはいらないようだし、特に Raspberry Pi では付けるとエラーになる。)
i) 「第3土曜日の前日」の朝7時に実行する場合。次の日が土曜日となる、14 から 20 日のいずれかの日。
i-1) Mac
0 7 14-20 * * [ "$(date -v+1d +\%w)" -eq 6 ] && {コマンド}
i-2) Raspberry Pi
0 7 14-20 * * [ "$(date -d '+1 day' +\%w)" -eq 6 ] && {コマンド}
ii) 「第1水曜日の前日」の朝7時に実行する場合。第1水曜日が1日(=次の日が “1日かつ水曜日”)か、それ以外(=次の日が “1~6日の水曜日”)かで2パターン用意する。
i) Mac
0 7 * * * [ "$(date -v+1d +\%w)" -eq 3 ] && [ "$(date -v+1d +\%d)" -eq 1 ] && {コマンド}
0 7 1-6 * * [ "$(date -v+1d +\%w)" -eq 3 ] && {コマンド}
ii) Raspberry Pi
0 7 * * * [ "$(date -d '+1 day' +\%w)" -eq 3 ] && [ "$(date -d '+1 day' +\%d)" -eq 1 ] && {コマンド}
0 7 1-6 * * [ "$(date -d '+1 day' +\%w)" -eq 3 ] && {コマンド}
参考:
Macでdateコマンドが違う件について | learningBOX株式会社
https://learningbox.co.jp/
How to use the date Command - Pi My Life Up
https://pimylifeup.com/date-command-linux/
Mac の date コマンド #macOS - Qiita
https://qiita.com/tanaka-qtaro/items/073aedbe157023403bf7
date コマンド | コマンドの使い方(Linux) | hydroculのメモ
https://hydrocul.github.io/wiki/commands/date.html
Amazon.co.jp: Raspberrypi 正規代理店商品 Raspberry Pi 4 Model B (8GB) made in UK element14製 技適マーク入 : パソコン・周辺機器
https://amzn.to/3RV8CZp