xai1981's blog

http://twitter.com/xai1981

cron 実行時の環境変数

コマンドラインで実行するとうまく行くのに crontab で設定した場合うまく動かない。 Bash環境変数は cron 実行時には利用できないのが うまく動かない原因でした。

Bash環境変数を見る

$ printenv
HOSTNAME=hoge
TERM=xterm
SHELL=/bin/bash
HISTSIZE=10000
NLS_LANG=Japanese_Japan.AL32UTF8
SSH_CLIENT=XXX.XXX.XXX.XXX XXXXX XXXXX
SSH_TTY=/dev/pts/2
USER=bar
ORACLE_HOME=/opt/oracle/product/11.2.0
LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/lib
...

解決手法1

cron 実行時に頭でセットする

ORACLE_HOME="/opt/oracle/product/11.2.0"

* * * * * touch /tmp/hoge

解決手法2

cron 実行時に Bash環境変数を読み込む

* * * * * /bin/bash -l touch /tmp/hoge

個人的には解決手法2が好みです。

参考サイト