Perlプログラムでcronを実行する際の注意点

perlで書いたプログラムをcronで毎時実行させようとしたときの問題。


コマンドで実行させればなんら問題なく動くのに、cronで実行させようとすると、全く反応しない。
なんでなんだと色々調べてみると、どうやらcronでの動作はPATHという概念が無くなってしまうので、相対パスでの記述が出来ないらしい。


プログラムの多くの部分で相対パスを使っていたので、もうしょうがないから無理矢理動かすことにした。
たとえば、

# /home/hoge/program.plをcronで毎時0分に実行したい

#失敗した
crontab -e
0 * * * * * /home/hoge/program.pl

#ということで無理矢理対処

#viでcroncommandってファイルを作って
vi /home/hoge/croncommand

#中身はこんな感じ

#!/bin/sh
cd /home/hoge
/home/hoge/croncommand

#:wqで終了して実行権限を付与
chmod 755 /usr/hoge/croncommand

#cronを設定する
crontab -e
0 * * * * * /home/hoge/croncommand


たぶん、あんまりよくない方法だと思う。
やってることが美しくない。