0

bash スクリプトの最後に次の行があります。

wget -q $URL -Y off

は、bash スクリプトのコンソール出力を含むLIVEURL txt ファイルへのパスです。

LIVE txtファイルの説明:

この txt ファイルは、コンソール出力を保存するため、プロセスに沿って更新され続けます。私のシェル スクリプトには「重い」プログラムが含まれているため、コンソール出力は非常に長く、txt ファイルの生成には時間がかかります (おそらく 3 ~ 5 秒の遅延)。

問題: 最終的な txt ファイルのごく一部しか含まれていない不完全な txt ファイルを取得することがあります。(コマンドの前にすべてを取得することが期待されていますwget)興味深いことに、ダウンロードした不完全なtxtファイルのほとんどは9999行目でスタックしています。これが制限かどうかはわかりませんが、コンソールが出力は 5k 行未満です。

質問:wget特定の時間待機させる方法はありますか?

-Tpsタイムアウトオプションがwgetあり、デフォルトは900秒であることは知っています。しかし、私の問題は接続が遅いことではなく、ファイルの生成の遅延に関係しています。

4

1 に答える 1

0

このwgetステートメントが出力を生成するスクリプトの一部として実行されている場合、おそらく何らかの出力バッファリングの問題が発生しています...つまり、スクリプトがまだ終了していないため、出力がまだフラッシュされていません。

どのように出力をリダイレクトしていますか? wget1 つの方法は、ステートメント以外のすべてをサブシェルでラップし、その出力をリダイレクトすることです

#!/bin/sh

(
  a bunch
  of commands
) > output 2>&1

wget -q $URL ...

これにより、他のコマンドが完了し、含まれているシェルが実行時に終了していることが保証されwgetます。

于 2012-11-14T17:58:06.163 に答える