cronで環境変数を利用するための読み込み方法

cronで環境変数を違和感なく使う

したいこと

具体的にはdocker composeyamlファイル(docker-compose.yml)で指定した環境変数をcronで使いたい。 設定値をハードコードしておくのは書き換えが多い場合は非常に面倒なので。

しかし、そのままcrontabは環境変数が必要最小限のものしか用意してくれないので、なんとかする必要がある。

すること

こちらが参考になった。

Just a moment...

ログインシェルとして実行すればいいので、* * * * * bash -l -c <script>のようにすればいい。

比較用crontabは以下。envの出力情報が異なるはず:

* * * * * bash -l -c "env"
* * * * * bash -c "env"

他の方法もある

ケースによっては異なる読み込み方法の方がセキュリティ上は安心だろう。crontab内に環境変数を設定したり、crontab-lを付与したshebangを追加したり、コマンド実行の前に環境変数設定スクリプトを実行したりなど、方法は様々あるようだ。

今回はDockerのコンテナ内での実行なのでこれで大丈夫なはず。

以上です。

タイトルとURLをコピーしました