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
たぶん、あんまりよくない方法だと思う。
やってることが美しくない。