2010-12-18 6 views
1

私は別のスクリプトをバックグラウンドで複数のパラメータを使って複数回呼び出すスクリプトを実行しています。複数の同時実行インスタンスを実行しているときにwgetがダウンロードデータを取得するのをどうやって修正しますか?

最初に、2次スクリプトは、そのURLにあるファイルのリストを取得するために、ftp urlでwgetを実行します。それを一意のファイル名に出力します。

簡略化した例:
これらの各々は、バックグラウンドで実行されている二次スクリプトの別のインスタンスにより呼び出されています。

wget --no-verbose 'ftp://foo.com/' -O '/downloads/foo/foo_listing.html' >foo.log 

wget --no-verbose 'ftp://bar.com/' -O '/downloads/bar/bar_listing.html' >bar.log 

2度目のスクリプトを一度に1回実行すると、すべてが正常に動作します。私は、ブラウザを介してftpのURLを表示するときと同じ方法で、ファイルのリスト、それらへのリンク、およびファイルに関する情報を持つhtmlファイルを取得します。

foo_listing.html:

... 
<a href="ftp://foo.com/foo1.xml">foo1.xml</a> ... 
<a href="ftp://foo.com/foo2.xml">foo2.xml</a> ... 
... 

bar_listing.html:

... 
<a href="ftp://bar.com/bar3.xml">bar3.xml</a> ... 
<a href="ftp://bar.com/bar4.xml">bar4.xml</a> ... 
... 

は、例えば、結果を一度に簡略化されたものを継続的(及び予想しました)私は二次スクリプトを何度も実行しますe背景、いくつかの結果ファイル、ベースURLが正しいものの(渡されたもの)、リストされたファイルは異なるwgetの実行からのものです。

継続簡略多重(実際の)例の結果:

foo_listing.html:正しい

... 
<a href="ftp://foo.com/bar3.xml">bar3.xml</a> ... 
<a href="ftp://foo.com/bar4.xml">bar4.xml</a> ... 
... 

bar_listing.html
、奇妙な

上記のように、私がダウンロードする他のすべてのファイルはjusを動作させるようです罰金です。これらのリストファイルだけが混乱してしまいます。

現在の回避策は、バックグラウンドプロセス間に5秒の遅延を入れることです。その1つだけを変更するだけで、すべてが完璧に機能します。


これを修正する方法を知っている人はいますか?

リストファイルを取得する、または同時に実行しない他の方法を使用することはお勧めしません。可能であれば、多くのバックグラウンドプロセスでwgetを使用するときにこれを修正する方法を実際に知りたいと思います。

EDIT:

注:

私はwgetのは、画面に吐き出すことをステータス出力を参照するわけではありません。私はそれについて気にしません(実際には別々のログファイルに格納され、正しく動作しています)。私はデータwgetがWebからダウンロードしていることを指しています。

また、私が使用している正確なコードは、私の会社にとってはプロプライエタリであるため、表示することはできません。バックグラウンドインスタンス間に5秒の遅延を入れても完全に動作するので、私のコードには何も「間違っている」ことはありません。

+1

ファイル名を生成するコードは正しいですか?一度に1つの 'wget'を実行しているとき、すべてが期待どおりに動作しますか? –

+0

うん、現在の回避策は5秒遅れている。その1つの変更だけで、すべてが期待通りに機能します。 – evan

+0

明らかでない場合に備えて。すべてのファイル名の生成が正しく行われています。そうでなくても、ファイルに出力するときに各行が正しいことを意味します。ファイルの各行の代わりに、一部のパーツは一貫してwgetや他のパーツのインスタンスに対応し、一貫して別のインスタンスからのものです。 – evan

答えて

0

Gnuでバグを記録し、できるだけ別のものを使用し、同時実行間の時間遅延を入れてください。 ftpディレクトリリストを取得するためのラッパーを作成して、一度に1つしか取り出せないようにすることができます。

: -/

関連する問題