アプリ版:「スタンプのみでお礼する」機能のリリースについて

bashで15分前と現在のエポックタイムの時間を取得するシェルをcronを用いて15分おきに実行したいです。

現在の時間から15分前といった処理にしようかと思いましたが
ミリ秒単位で瞬間的なズレがないように実装する場合、cronの処理では若干遅れる可能性もあると認識しています。


例ですが、現在の時刻が15:15だった場合、ミリ秒単位でずれないように
15:00:00
15:15:00
の時間をエポックタイムで取得する方法があれば教えて下さい。

A 回答 (2件)

cronからコマンドの起動にミリ秒の精度は無いので、前回起動時に使ったミリ秒単位の時刻を今回起動時に使いたいのであれば、ファイルに書いておくしかないと思います。

dateコマンドだとミリ秒というのは無いのでナノ秒ですね。
now=`date +%s.%N`
last=`cat /path/to/lasttime`
echo $now > /path/to/lasttime

簡単には、分未満はゼロと仮定することです。
now=$(date +%s -d "$(date +'%F %H:%M:00')")
last=$(date +%s -d "$(date +'%F %H:%M:00' -d '- 15 min')")
    • good
    • 0

ご認識のとおりcron実行はミリ秒単位ほど正確な実行ではありません。


なので15分前、現時刻のunixtime取得時に秒数を丸めて取得させてあげた方が良いかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!