dポイントプレゼントキャンペーン実施中!

Fedora8の環境でcronの設定をしましたが思い通りに動いていないみたいなので教えてください。
まず、cronの設定は
crontab -l
SHELL=/usr/bin/perl
*/5 * * * * root /var/www/cgi-bin/test.cgi
です。
このtest.cgiは、コマンドラインで./test.cgiとすると同じディレクトリ内のファイルに動作した時間とその旨のログを追記します。
perlで書いてあり、現在の属性は755 ftpuser:ftpuserとなっています。
とりあえず5分間隔で動作するように設定したつもりです。
しかし、いくら待てどもそのログファイルに追記されません。
ちなみに、/var/log/cron には
CROND[3511]: (root) CMD (root /var/www/cgi-bin/test.cgi)
なカンジで5分ごとにログが出ています。また、5分毎にメールが来ていて(Cronデーモンから?)
/var/www/cgi-bin/test.cgi syntax OK
と記載されています。
test.cgiからログを吐かせるには何が必要かご教授願います。

A 回答 (3件)

同じようにやったところ再現しました。

原因は、
> SHELL=/usr/bin/perl
にあります。

SHELL=/bin/bash に戻し、chmod a+rx /var/www/cgi-bin/test.cgi するか、
*/5 * * * * root /usr/bin/perl /var/www/cgi-bin/test.cgi
に変えましょう。

どうも cron は、crontab に登録されたコマンドを -c オプションをつけ
て実行しているようです。そのため SHELL を /usr/bin/perl に変えると
実行されるコマンドは
/usr/bin/perl -c "/var/www/cgi-bin/test.cgi"
のようになり、文法チェックだけが行われるようです。
    • good
    • 0
この回答へのお礼

わざわざ再現試験までしてくれたんですか!!
ありがとうございます!
ご指摘の通り、shellを戻したところ5分間隔でログを吐くようになりました。chmodは777にしてたのを一応755に戻しました。
cronで定期的に起動するのに文法チェックだけしてるなんてよくわからない仕様ですね。勉強になりましたありがとうございました。

お礼日時:2008/03/05 00:00

もしかして吐き出すログファイルは間接パス指定にしていませんか?


もしそうだったら絶対パスにしてオーナー及びパーミッションにも注意してみてください。
    • good
    • 0
この回答へのお礼

みなさまのアドバイスのおかげで無事解決できました
ありがとうございました。

お礼日時:2008/03/05 00:00

test.cgi の一行目は、どう書かれていますか。


#!/usr/bin/perl -cw
のようになっていると、文法チェックだけを行うので、
#!/usr/bin/perl -w
に変更しましょう。

この回答への補足

ありがとうございます。
現在のCGI一行目は#!/usr/bin/perl
になっています。
-wとかってデバッグ用かなんかのオプションですか?
試してみたところcgiの途中で
Use of uninitialized value in string
だと言われましたが、コマンドラインから実行した結果は変わらず
また、cronの結果も変化ないようです。これは何を意味しているのでしょうか。

補足日時:2008/03/02 22:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!