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

たぶん、あんまりよくない方法だと思う。

やってることが美しくない。

この記事を書いた人

五藤隆介(goryugo)

愛知県在住1980年生まれ。

「仕事効率化」「ライフログ」「家族Hack」「デジタル情報共有」みたいなことを書いてます。

2014年に結婚して料理を覚えて、理系の料理という本を書きました。

年に1〜2回子連れで長旅をするようになり、新しく旅ブログも作りました。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします