webdevqa.jp.net

XargsとWgetは1時間後に動作を停止します

WindowsでCygwinを使用してスクリプトを実行するXPデュアルコアおよび4GBRAMを使用

cat url_list.txt | xargs -P50 wget -i

4GB of [〜#〜] url [〜#〜]をトロールしてダウンロードしようとしています(約4300万)

最初の1時間は問題なく動作し、その後、URLリストで2%しかないにもかかわらず、Bashシェルとダウンロードが停止します。

何が間違っている可能性があるかについてのアイデアはありますか?

これが1時間後に停止する理由をデバッグするための最良の方法は何ですか?

8
Jake

Wgetがいくつかのファイルのダウンロードに時間がかかっている可能性があります。ハングしているように見える期間中に、メモリ内にwget/xargsプロセスはありますか?もしそうなら、それは-P50フラグを使用してxargsに割り当てた50プロセス全体ですか、それともその数を超えて、またはその数より少なくなり、新しいインスタンスが適切に生成されていませんか? cygwinで実行されていますが、Windows自体のプロセスリストを確認してください。wgetをダウンロードするたびにタスクマネージャーでインスタンスが起動するはずです。

2
Matrix Mole

URLはさまざまなサイトのものだと思います。その場合、応答が遅く、wgetの1つがハングするサイトにアクセスする可能性があります。 50を実行しているので、何も起こらない前にそれらのサイトの50をヒットする必要があります。

これが当てはまるかどうかを確認するには、ぶら下がっているwgetの1つを殺して、その1つがスタック解除されているかどうかを確認してください。

ハングするURLをスキップするには、wgetにタイムアウトを与えることができます。

wget -T 60
0
Ole Tange