LinuxなどUNIX系では、cronで定期的に実行するタスクの設定を
するが、cronによって実行されるタスクでは環境変数がほとんど設定
されていないようだ。
※設定されているのは、
LOGNAME (/etc/passwd のcrontabの所有者の行にあるユーザ名),
HOME (/etc/passwd のcrontabの所有者の行にあるホームディレクトリ),
SHELL (デフォルトは /bin/sh)
(HOME と SHELL は crontab ファイル先頭で変更可)
で、
MAILTO にユーザ名を設定すると、そのユーザにメールで出力を送る。
MAILTO="" のように空の値を設定すると出力はメールされない。
MAILTO が定義されていない場合は、crontab の所有者に対してメールが送られる。
PATH については不明。明示的にフルパス指定するべき。
/etc/profile や /etc/profile.d にあるファイル群は実行されて
いない。
HTTPがプロキシ下にある環境では http_proxy という環境変数に
プロキシを設定しているが、この環境変数も有効でない。
/etc/profile.d/proxy-env.sh
が http_proxy を設定するスクリプトだとすると、
HTTPアクセスをするcronタスクの中では、まず
. /etc/profile.d/proxy-env.sh
を呼んでおく必要がある。
重要なのは yum または apt などを実行するタスクで、
これが正常に動かないため、今まで手動でアップデートチェック
をするしかなかった。
4ヶ月ぐらい理由が分からなかったが、今日やっとわかった。
するが、cronによって実行されるタスクでは環境変数がほとんど設定
されていないようだ。
※設定されているのは、
LOGNAME (/etc/passwd のcrontabの所有者の行にあるユーザ名),
HOME (/etc/passwd のcrontabの所有者の行にあるホームディレクトリ),
SHELL (デフォルトは /bin/sh)
(HOME と SHELL は crontab ファイル先頭で変更可)
で、
MAILTO にユーザ名を設定すると、そのユーザにメールで出力を送る。
MAILTO="" のように空の値を設定すると出力はメールされない。
MAILTO が定義されていない場合は、crontab の所有者に対してメールが送られる。
PATH については不明。明示的にフルパス指定するべき。
/etc/profile や /etc/profile.d にあるファイル群は実行されて
いない。
HTTPがプロキシ下にある環境では http_proxy という環境変数に
プロキシを設定しているが、この環境変数も有効でない。
/etc/profile.d/proxy-env.sh
が http_proxy を設定するスクリプトだとすると、
HTTPアクセスをするcronタスクの中では、まず
. /etc/profile.d/proxy-env.sh
を呼んでおく必要がある。
重要なのは yum または apt などを実行するタスクで、
これが正常に動かないため、今まで手動でアップデートチェック
をするしかなかった。
4ヶ月ぐらい理由が分からなかったが、今日やっとわかった。
※コメント投稿者のブログIDはブログ作成者のみに通知されます