LoginSignup
3
3

More than 3 years have passed since last update.

cronの実行間隔を中途半端な時間に設定する

Posted at

課題

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される。
めでたしめでたし

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3