[Mac] 隔週の指定曜日にコマンドを実行
今年は「午前十時の映画祭」に行くことにした。
午前十時の映画祭10 デジタルで甦る永遠の名作
http://asa10.eiga.com/
午前十時の映画祭は隔週ごとに作品が上映される。チケットの予約を忘れないようにしたい。
ということで、cron で隔週ごとにメール通知を送るようにした。24 時間動かしている Raspberry Pi を使うのも悪くないけど、たまには Mac の cron も活用してみることにした。Mac は日中は毎日起動しているので、その間に cron を動かせばいい。
隔週で cron を動かすには以下のサイトが参考になった。
隔週でコマンド実行する方法【Linux – cron】 – サバとエンガワ
https://www.server-engineer.net/entry/2018/01/19/212222
Mac でコマンドでメール送信するための設定方法は以前書いた。
Mac の Terminal でメール送信 – with a Christian Wife
https://wacw.cf/2018/12/17/sending-email-with-mac-terminal/
***
今回は隔週木曜日の 18:15 にメール通知をすることにした。
(1)現在の週番号を確認する。
$ date +%W
本原稿の執筆時点で 13 週だった。午前十時の映画祭は奇数週金曜日に新しい映画が公開される。だから奇数週木曜日に通知させればいいということだ。
参考:
dateコマンド – HiiHahWIKI – making some notes for… –
http://www.hiihah.info/index.php?date%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89
if 文と test コマンド | UNIX & Linux コマンド・シェルスクリプト リファレンス
https://shellscript.sunone.me/if_and_test.html
(2)Mac の cron に以下を登録する。
15 18 * * 4 [ "$(expr $(date '+\%W') \% 2 )" -ne 0 ] && echo "http://asa10.eiga.com/2019/theater/all/" | mail -s "Book asa10" [送信先メールアドレス]
計算式部分は別の書き方にすることもできる。
15 18 * * 4 test $(expr $(date '+\%W') \% 2 ) -ne 0 && echo "http://asa10.eiga.com/2019/theater/all/" | mail -s "Book asa10" [送信先メールアドレス]
今回は奇数週に実行するけど、もし偶数週に実行するなら -ne 0 ではなく -eq 0 にする(週番号を2で割った余りで判断している)。
これで奇数週木曜日の 18:15 に Book asa10 というタイトルで、本文に上映スケジュールのリンクが書かれたメールが届くようになる。
参考:
[Raspberry Pi] cron で「第 X 曜日の前日」に実行3 – with a Christian Wife
https://wacw.cf/2018/12/29/cron-the-day-before-x-th-week-3/