1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

cronで環境変数を利用するときの対処法

Last updated at Posted at 2024-05-30

はじめに

cronで実行する際はではユーザー環境変数が反映されません。

cronではノンインタラクティブノンログインシェルでの実行になるため、~/.bashrc/etc/profile.d/*.shが読み込まれないことが原因です。

この問題を解決するために、cronの-lオプションを用いてログインシェルで実行するというやり方がありますが、ユーザー環境変数がそのまま反映されるため影響範囲が大きいです。

そのため必要な環境変数だけを設定し、cronで環境変数を利用するプログラムを使用する場合はひと工夫必要となり、今回はそのことを記事に書こうと思います。

もし誤っている内容などがあれば、コメントで訂正していただけると大変助かります。

全体の流れ

とは言っても簡単で、以下の手順で設定することで可能です。

  1. 環境変数を設定するコマンドが記載されたシェルスクリプトを記載
  2. cronで環境変数を使用する定期実行したいコマンドを書く前にsourceコマンドでシェルスクリプトを読み込む

(1) シェルスクリプトの記載

cronを実行するユーザーがアクセス可能な任意の場所に環境変数を設定するシェルスクリプト配置します。

またその際に、ファイルの実行権限を意識する。

# ファイルの所有者・グループ所属を変更
sudo chown <実行ユーザー> /path/to/shell_file.sh

# ファイルの所有者の場合
sudo chmod 700 /path/to/shell_file.sh

(2) cronの設定

以下のように設定することで、cronで定期実行したいコマンド上で環境変数を利用できます。

crontab -e

* * * * *  <実行ユーザー> source /path/to/shell_file.sh && <設定した環境変数を利用する定期実行したいコマンド>

参考資料

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?