- 2008年5月27日 02:44
- Plagger
crontabではほとんどの環境変数が設定されていないらしいので、そのままTerminalと同じコマンドを打っても動作しないことがある。
crontab で実行されるときには、ほとんどの環境変数が設定されていないので注意が必要。~/.cshrc・~/.login で設定している環境変数は設定されていないし、PATH も /bin:/usr/bin くらいにしか通っていない。そのため、command の部分に指定するのはシェルスクリプトにしておいて、シェルスクリプトの先頭で環境変数の設定を行い、その後いろいろなコマンドを実行するようにしておくのがよいだろう。
でもPlaggerとかをいくつも実行してる場合、いちいちシェルスクリプト用意するのも面倒だよなー。ということで、crontabに環境変数を指定してみた。
参考: suVeneのあれ: crontab 設定の小話
$ crontab -e
行頭に以下を追加。
PERL5LIB=~/Sites/plagger/plagger:~/Sites/plagger/plagger/lib:$PERL5LIB
すると以下の表示。ファイルの保存が出来てない?
crontab: temp file must be edited in place
どうもvimでファイルのバックアップを取る設定になっているのがまずいみたい。
参考: OSXでcrontabの編集が反映されない « ku
普段の設定はCronniX経由でやっているので、根本的な解決はせず一時的に.vimrcの該当行をコメントアウトして回避した。
$ vim .vimrc
":set backup
で、設定してOK。なはずなんだけど、なぜか
/opt/local/bin/perl plagger -c ~/Sites/plagger/fastladder-crawler.yaml
では動かず。
/opt/local/bin/perl ~/Sites/plagger/plagger/plagger -c ~/Sites/plagger/fastladder-crawler.yaml
としてやる必要があった。
なんでだろう。plaggerのパスは通ってるはずなんだけど。
あと /opt/loca/bin/perl も書きたくないなと思って
PATH=/opt/loca/bin:$PATH
とかしても書かないと動かない。せつなさサクレツ。
メモ
cronの設定ファイル直接編集してみたところ、CronniXから変更を加えた際にその部分が消えてしまった。
あちこちの説明を読むと、cronttab -e したり、crontab ~/.crontab したりしているし、直接編集は思想的にNGなのかな?
一応、cronの設定ファイルは(Mac OS X 10.4.11の場合)以下にあるけどいじらない方が良さそう。
$ vim /var/cron/tabs/USERNAME