cron で実行されるときの言語環境 [その他]
linux で遭遇した現象の話
レンタルサーバ上で検索を実現するために、ローカル linux PC で namazu のデータを作っている環境がある。
namazu データを作り、ftp で転送するシェルスクリプトを当然作り、手順を間違えないようにしている。そして、このシェルスクリプトをcron で一日1回実行するようにしている。
このような環境で動作を始めてから、数ヶ月経って、以下のようなクレームが来た。
「更新したファイル・新しいファイルが検索対象となっていないように見える」
確認すると確かに、検索対象になってないように見える。
ためしに、手でシェルスクリプトを実行すると、「あれ?」きちんと検索対象となっている。
タイムスタンプが変になっているのか?元ファイルを windows からコピーしているので、それが変なのかなどいろいろ調査したが良く分からない。
しかし、先日やっと解決した。
cron でシェルスクリプトが実行するときに、LANG=C であったようなのだ。もちろん、linux OS 自体の環境は LANG="ja_JP.eucJP" と日本語環境になっているのだが、cron で呼ばれたときはそうでなかったらしい。なので、手で実行したときと、cron で実行したときで結果が違っていたのである。
調べると、確かに、英単語を検索対象にしたときは、きちんと検索対象になっていた。さらに、namazu を実行したときに表示されるメッセージが、手で実行したときは日本語、cron でのときは英語になっていた・・・気づかなかった^^
今後は cron の時の環境にも、より気を使うようにしなければ・・・
コメント 0