- ベストアンサー
cron で *.pl を実行してるんですが何故?
FreeBSD にて、perl プログラムを定期的に動かしたい んです。( はっきり言えばメールの送受信をしたい ) これは当然、crontab を使うかと思うのですが、 * * * * * /home/public_html/cgi/pop3_Soushin.pl ・・・のように、crontbab -e でスクリプトの絶対パス を書いて、成功するのをじーっと待っていると、 /home/public_html/cgi/pop3_Soushin.pl : not found ・・・という、やるせないメールが飛んでくるのです。 一体どうしてでしょうか・・・パス、大文字、小文字は 何度も確かめたですが、間違いはないようです。 初心者の単純なミスなのかもしれませんが、解決策を ご存知の方、どうかよろしくお願いします。m(__)m
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
念のためpop3_Soushin.plの置いてあるディレクトリに移動してpwdコマンドを実行してみて下さい。 表向きと実際のディレクトリ構成が違う場合もありますので…。 もし違っていたらそちらのパスに書き換えましょう。
その他の回答 (5)
- ken2
- ベストアンサー率36% (86/235)
答えになっているかどうかはわかりませんが、cronを使った場合は、実際に同じコマンドを打つ場合と異なる点として、環境変数がセットされないということがあります。この場合は、/home/public_html/cgi/pop3_Soushin.pl ということで、絶対パスなので、ここについては問題ないと思いますが、スクリプトの中身は、絶対パスになっているでしょうか?もしくは、環境変数が(たとえば、PATH)がきちんとセットとされているでしょうか? もしくは、 /usr/local/bin/perl /home/public_html/cgi/pop3_Soushin.pl のような記述にしてみたらどうでしょうか?(あまり関係ないと思うけど・・・)
お礼
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
- natural
- ベストアンサー率37% (419/1115)
ちょっと気になったのですが、 >/home/public_html/cgi/pop3_Soushin.pl >: not found は2行に分かれて出力されたのでしょうか? また、エラーメッセージはこれで全文ですか? 補足お願いします。
お礼
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 エラーメッセージはそれで全文です。2行です。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
crontbab -e を設定したユーザーで、実際に /home/public_html/cgi/pop3_Soushin.pl を実行することが出来ますか? pop3_Soushin.pl自体のパーミッションだけでなく、 上位のディレクトリのパーミッションが原因の可能性もあります。
お礼
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
- h-kiku
- ベストアンサー率50% (22/44)
/home/public_html/cgi/pop3_Soushin.pl の1行目に記述してある perl の絶対パスが 違っていたりしませんか?? #!/usr/bin/perl とか #!/usr/local/bin/perl になっている部分を確認してみてください.
お礼
ご回答ありがとうございます。 間違いはありません。 ほんとにふに落ちないので、サーバー業者にやいのやいの と聞いてみることにします。
補足
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
- a-kuma
- ベストアンサー率50% (1122/2211)
> 一体どうしてでしょうか・・・パス、大文字、小文字は > 何度も確かめたですが、間違いはないようです。 を信じるならば、その pop3_Soushin.pl というファイルに実行権限が ついていないということが原因かと思います。 cron は、その登録したユーザの権限で実行されますので、例えば、 naru というユーザで crontab -e で設定をしたのであれば、その naru というユーザに対する実行権限が必要です。
お礼
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
補足
実行権限はあってるとおもうのです。。。 一応、サーバーの業者に今問い合わせてみます。 回答ありがとうございました。
お礼
この件、うんうんやってたらなんとか解決しました。 ありがとうございます。 cron の 設定をテキストファイルでアップしてから、 シェル上で、crontab my_contab のように設定してたの ですが、それがどうもいけなかったようです。 ファイルを転送したら、まずはそのファイルに対し、 一度は vi で入っておいて、更新するといいようです。 ご面倒をおかけしました。
補足
回答ありがとうございます。 さっそく調べてみましたが、やはり間違いがないよう です。 もう、しばらく悩んでみます。。。