2011-07-26 7 views
0

私は毎分実行する予定のperlスクリプトを持っています。 は、私は私は私が/ varに猫のcronを実行する際に/ログ以下のようなエントリを参照してくださいという理由だけで、スクリプトは毎分を実行していると仮定し 私のCronジョブと混同しました

* * * * * PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl 

としてcronジョブを設定している/

Jul 26 04:57:01 dmvbu-build crond[773]: (root) CMD (PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl) 

Jul 26 04:58:01 dmvbu-build crond[687]: (root) CMD (PATH= /usr/local/bin:/usr/bin:/usr/sbin:/usr/lib; perl /dm2/www/html/isos/pre5.3/autoDownload.pl) 

しかし、私の問題は、私は

LOGは DM2/WWW/HTML/ISOイメージ/ pre5.3 /に配置されてlog.txtという名前のファイルへのファイルディスクリプタである
print LOG "connecting to website\n" 

のようなステートメントを持っています(autoDownload.plと同じ場所)

しかし、私はcronのログファイル のエントリを参照した後、新しい情報で更新するこのlog.txtファイルを参照してくださいいけない。しかし、私は手動で

コードを実行したときに、私は、このファイルの更新を参照してください
+0

エラーを含むcronによって送信されたメールを確認しましたか?あるいは、stdoutとstderrの両方をloggerでパイプしてsyslogに書き出します。 –

+0

なぜこのスクリプトをrootとして実行していますか?通常のユーザー権限でも同様に動作します。 – Dallaylaen

+0

cronからメールをチェックする方法は? – mac

答えて

1

cronラインは=後のスペースの不足とperl前にセミコロンがないことに注意してください

* * * * * PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib perl /dm2/www/html/isos/pre5.3/autoDownload.pl 

でなければなりません。

2

=の後に余分なスペースを削除する必要があります。PATHです。

PATH=/usr/local/bin:/usr/bin:/usr/sbin:/usr/lib 
+0

申し訳ありませんが、私はパスにスペースを持っていません。ここに入力している間にちょうど間違ってしまった – mac

+3

入力しないでください。カット&ペースト。 –

1

open() -ingのログファイル(/dm2/www/html/isos/pre5.3/log.txtではなく、/dm2/www/html/isos/pre5.3/log.txt)への絶対パスを指定します。それ以外の場合は、cronの「現在の作業ディレクトリ」が必要な場所にあることを確認する必要があります。

また、このコマンドが実行されたユーザーにファイルへの書き込み権限があることを確認します。

+0

ええと、私はcronが自動的に現在のディレクトリでスクリプトを実行すると思っていました。タンクス – mac

1

出力/エラーが発生したときにプログラムをデバッグする方がはるかに簡単です。 また、スクリプトの先頭かcron行のどちらかでperlへの絶対パスを使用する必要があります。その後、$PATHの厄介さを取り除くことができます。

# Make sure you script is executable 
chmod a+x /dm2/www/html/isos/pre5.3/autoDownload.pl 

プロセスの上にMAILTO行をcronに追加してみてください。

MAILTO="[email protected]" 
* * * * * /usr/bin/perl /dm2/www/html/isos/pre5.3/autoDownload.pl 

または、cron出力をファイルに記録してエラーを監視します。 crontabに/usr/bin/perlを取り除くには、スクリプトの1行目を確認してください#!/usr/bin/perl

* * * * * /dm2/www/html/isos/pre5.3/autoDownload.pl &> /tmp/autoDownload.log 
関連する問題