sidecarのshell scriptで時間をトリガーにする
shell scriptを時間指定で実行したいときに cronjob や at など方法があると思います。
ただKubernetes環境で実行したいときはどうでしょうか?
shell scriptを実行するだけなら cronjob リソースを使えば良いのですが、今回は対象アプリのsidecarとして載せる必要がありました。この場合は Deployment リソースなので、shell scriptに時間トリガーを仕込む必要がありました。
時間を integer に変換して比較・・・など色々試行錯誤しましたが、stackoverflowのHow to check if the current time is between 23:00 and 06:30に素晴らしいアイデアがありました。
結論は date を string で取り出して、case で判定を行います。
#!/bin/bash while :; do currenttime=$(date +%H:%M) echo $currenttime case "$currenttime" in (04:21) # 04:21にbreakしてscriptを終了 echo "break" break ;; (*) echo "*" ;; esac sleep 5s done exit 0 動作させた結果がこちらです。
$ bash test.sh 04:20 * 04:20 * 04:20 * 04:21 break バッチリですね。02:00~04:00の間などの条件を使いたいときは正規表現です。
Read more