cronで毎日交互に(2日に1回)処理を実行したいけど、cronがバカなもので……

色々考えてはみたけれど、これが一番簡単ですかねぇ。メモしておきましょう。
たまにはツイートの自動まとめ投稿以外のまともな内容も書かないと。


(1)crontabに「毎日23:30に/script/test.shを実行」するよう設定


# crontab -e

30 23 * * * /script/test.sh


(2)以下のようなスクリプトを作成


・「/script/test.sh」の内容

echo "1回目の処理"
cp /script/test.sh.2 /script/test.sh


・「/script/test.sh.1」の内容

echo "1回目の処理"
cp /script/test.sh.2 /script/test.sh


・「/script/test.sh.2」の内容

echo "2回目の処理"
cp /script/test.sh.1 /script/test.sh


あ、スクリプトに実行権限を付加するのを忘れないようにどうぞ。


(3)「/script/test.sh」を何回か実行してみる
「1回目の処理」と「2回目の処理」が交互に表示されるはずです。


これを応用すれば、3日に1回、毎週交互、毎月交互……なんかも出来るわけですね。
手間を掛けるなら、スクリプトが途中でエラーになっても最後のcpは実行するようにするなど。