0

Windows 2008 サーバーに awstats をインストールしました。Updatestats.bat ファイルを毎日実行するようにスケジュールすると、タスクはエラーなく正常に実行されますが、スクリプトが実行されないか、表示できないエラーが発生します。

-- コマンド ラインから直接バッチ ファイルを実行すると、問題なく動作します。--

nncron「 」や「 」など、Windows スケジューラのさまざまな代替手段を試しFreebyte Task Schedulerました。nncron にも同じ問題がありましたが、freebyte アプリは機能しましたが、残念ながらサービスとして実行されないため、役に立ちません。これがbatファイルの内容です。すべての行は次のようになります。

c:\strawberry\perl\bin\perl.exe D:\AWStats\wwwroot\cgi-bin\awstats.pl config=earlsmere.co.uk -update

誰かアイデアを持っていますか?

4

2 に答える 2

1

無人環境は、コマンドラインとは明らかに異なります。以下が設定されているかどうかを確認します。

  1. スクリプトの作業ディレクトリ (そこから何かを読み取る場合、または相対パスを使用する場合)。
  2. スクリプトでモジュールを使用する場合は、PERL*_LIB 環境変数。
  3. PATH 環境変数 (スクリプトが外部スクリプト/バイナリを呼び出す場合)。
  4. スケジュールされたタスクを実行しているユーザーは、実行したいすべてに対して十分な権限を持っています。

chdir簡単な回避策として、 functionlibmodule、および$ENV{PATH}entryを使用してスクリプトで直接設定できます。

他のことを始める前に、次のリダイレクトで標準出力とエラーのキャプチャを試みることもできます。

open(STDOUT, '>>', '/full/path/to/out.log') || die "Error stdout: $!";
open(STDERR, '>>', '/full/path/to/err.log') || die "Error stderr: $!";

実際に作業ディレクトリの設定が間違っている場合に備えて、絶対パスを使用する必要があることに注意してください。そして、ターゲットディレクトリ/ファイルが誰でも書き込み可能であることを確認してください。

于 2012-06-04T10:03:05.403 に答える
0

出力が宇宙で失われるように見えます...

次のように、コマンドの出力をファイルにリダイレクトすることをお勧めします。

c:\strawberry\perl\bin\perl.exe D:\AWStats\wwwroot\cgi-bin\awstats.pl config=earlsmere.co.uk -update > c:\my_log.txt 2>&1

(Anders Lindahl の厚意による: DOS で stdout と stderr を 1 つのファイルにリダイレクトする)

于 2012-06-04T09:51:58.317 に答える