開発覚え書き

ソフトウェアシステムの開発に関わるさまざまなことの覚え書き

cronによる実行タスクでの環境変数

2005-07-01 12:55:30 | Weblog
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ヶ月ぐらい理由が分からなかったが、今日やっとわかった。

コメントを投稿