それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Crontabの環境変数はどうなっているのか、調べる

Crontabの環境変数のポイントまとめ

  • CRONの環境変数はCRON設定の先頭に記述します。
  • Bash環境変数と共有してないので注意。
  • ただし、以下の変数はUNIXユーザーに通常存在する環境変数なので、使うことが出来る。
    • HOME、SHELL、LOGNAME
  • そのほかはCrontablにかく

Bash環境変数と共有するなら、Cronで実行するスクリプトに環境変数を定義するべき。

わかりやすい例。

例があったので見た方が速い。

http://blog.livedoor.jp/sasata299/archives/51279219.html


Crontabの記述例。


Q.ユーザー環境変数は引き継がれるの?
A.されない

Manページによると

・HOME、SHELL、LOGNAMEが設定される、HOMEはcron設定のファイルオーナーの環境変数が使われる。

manより抜粋

crontab の動作行は、環境変数の設定か cronコマンドのいずれかである。環境
       変数の設定は以下の形式をとる:

        name = value

       た だし、等号 (=) 両側のスペースはなくても良い。 value 内部の (先頭では
       ない) スペース文字は、値の一部として name に与えられる。 value 文字列は
       引 用符で括ってもよい (シングルクォートでもダブルクォートでも良いが、揃
       っている必要がある)。こうすれば先頭や末尾の空白を値に渡すことができる。

       いくつかの環境変数は cron(8) デーモンによって自動的に設定される。 SHELL
       は /bin/sh に設定され、 LOGNAME とHOME は /etc/passwd の crontab の所有
       者 の行から設定される。 HOME と SHELL は crontab 内部の記述で変更できる
       。 LOGNAME は変更できない。

crontab の動作行は、環境変数の設定か cronコマンドのいずれかである。環境
       変数の設定は以下の形式をとる:

        name = value

       た だし、等号 (=) 両側のスペースはなくても良い。 value 内部の (先頭では
       ない) スペース文字は、値の一部として name に与えられる。 value 文字列は
       引 用符で括ってもよい (シングルクォートでもダブルクォートでも良いが、揃
       っている必要がある)。こうすれば先頭や末尾の空白を値に渡すことができる。

       いくつかの環境変数は cron(8) デーモンによって自動的に設定される。 SHELL
       は /bin/sh に設定され、 LOGNAME とHOME は /etc/passwd の crontab の所有
       者 の行から設定される。 HOME と SHELL は crontab 内部の記述で変更できる
       。 LOGNAME は変更できない。

http://www.80code.com/kb-ja/crontab.html

cronの環境変数など

ポイント
PATHとかRVM関連で必要。


HOMEとか重要、これはそのまま使える。