#課題
0:00 0:45 1:30 2:15 ...
のように時間をまたいで45分おきに処理を実行させたいとき、cronに
*/45 * * * * echo "hoge"
と記述すると
0:00 0:45 1:00 1:45 ...
と毎時0分と45分にhogeされてしまう。そうじゃないんです。
#解決方法
dateコマンドを使って経過分を計り45の倍数かどうか判定してから実行させる
date +%s
#1564668913 (2019-08-01 23:15:13のunixtime)
$[$(date +%s)-1556636400]
#8032513 (2019-05-01 00:00:00からの経過秒)
test $[($(date +%s)-1556636400)/60%45] -eq 0 && echo "piyo"
#piyo (経過分を45でわった余りが0に等しいときpiyoする)
cronでは%はエスケープされてしまうので(ここでそこそこ詰まった)、最終的には
cron
* * * * * test $[($(date +\%s)-1556636400)/60\%45] -eq 0 && echo "nyan"
#*/15 * * * * も可
これで無事45分おきにnyanされる。
めでたしめでたし