cronにハマる

さくらで、ユーザーローカルにCPANモジュールをいろいろインストールしています。bashrcで環境変数PERL5LIBを設定してライブラリのパスを指定していました(過去形)。


ライブラリパス:PERL5LIB=$HOME/local/lib/perl5


ってな感じで。ターミナルで実行していい感じだったのでcronに設定して自動実行させてみました。これでいちいちGETしにいかなくてもいいので楽ちんです。んで、postmasterに来てるメールで実行結果確認。


Unicode::Japaneseが見つからないってさ。あれぇ?


上記のブツのパスを確認すると、


:$HOME/local/lib/perl5/i386-freebsd-64int


と、何故か更に一階層下に配置されていたので、PERL5LIBにパス追加。


:結果:NG


何せcronでしか再現しないエラーなので、cronの設定を1〜2分刻みでずらして実行させてメール確認しての繰り返しでなんとかエラー回避、以下参照。


:対処:cronの設定画面の環境変数にPERL5LIBを追加。


cronって使ったことがなかったんでいろいろ実験してみたんですが(さくらの中の人ごめんなさい)、ユーザー権限のcronで実行するスクリプトのカレントディレクトリって、ユーザーディレクトリのトップなんですね(スクリプトファイルの存在するディレクトリではない)。これから気をつけよう。