puf(パラレルURLゲッター)のみが見つかりましたが、次のファイルからURLを読み取ることはできません。
puf < urls.txt
いいえ。
サーバーにインストールされているオペレーティングシステムはUbuntuです。
答え1
使用GNUパラレル、
$パラレル-j${日}wget <urls.txt
またはxargs
GNU検索ツール、
$xargs -n 1 -P${日}wget <urls.txt
${jobs}
許可したい最大同時実行数はどこにあります(回線ごとに1回の呼び出しを受信するように設定)。 / がないと、一度に 1 つずつ CPU コアほど多くのジョブが実行されます (ネットワーク IO 制約を考慮すると必ずしも意味があるわけではありません)。wget
-n
1
wget
urls.txt
-j
-P
parallel
wget
xargs
parallel
同時に実行されるジョブの出力を切り離すのが良い機能ですがxargs
、気にしなければxargs
あらかじめインストールされている可能性が高いです。
答え2
aria2がまさにそのようなことをします。
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
例: aria2chttp://example.org/mylinux.iso
答え3
Pythonとpycurlライブラリを使用してこれを行うことができます。 pycurlライブラリには、独自の偶数ループを実装して複数の同時接続を可能にする「マルチ」インタフェースがあります。
しかし、インターフェイスはCに似ているため、他の「Python」コードと比較して少し面倒です。
私はそれのためのラッパーを書いて、その上でより完全なブラウザに似たクライアントを構築しました。これを例として使用できます。よりパイコピア.WWW.クライアント基準寸法。 HTTPConnectionManager は複数のインタフェースをラップします。
答え4
GNU並列マニュアルページの一部には、並列再帰wgetの例が含まれています。
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
HTMLは2回ダウンロードされます。一度はリンクを抽出し、一度はディスクにダウンロードします。他のコンテンツは一度だけダウンロードされます。
再帰が必要でない場合、ephemientの答えは明らかに見えます。