私はこのbashコマンドを使います:
cat urls.txt | xargs -d $"\n" -n 1 -P 250 php script.php $1
ファイルの終わりに達すると、urls.txt
何もしません。私のスクリプト(問題がある場合)はWebサイトに接続して探していますが、スクリプトを手動で実行する<a href>
とphp script.php http://url
xargsコマンドを実行すると何百ものWebサイトがあっても正常に動作しますが、urls.txt
ファイルが十分に大きい場合(数MB)に達すると何もしません。しません。EOF。
私の考えでは、スクリプトに問題がないようです。どういうわけかxargsはファイルの終わりを検出できず、入力を待っています。解決策はありますか?
編集する:tail -n1 urls.txt
また、nullデータがあるかどうかEOFを確認してみましたが、すべてがうまくいきました。
答え1
-scriptが機能しない理由がわかりませんxargs
。最後に改行文字がないか、他の-d
オプションの問題がある可能性があります。小さいリストが実行されるため、一部の行に問題のある文字がある可能性があります。
だから-d $'\n'
私は-I{}
。コマンドを使用すると、{}
すべての行で置き換えられます。
さらに、あなたはウルムチ大学、xargs
提案-a
または--arg-file
オプション:
-a ファイル、 --arg-file=ファイル標準入力の代わりにファイルから項目を読み込みます。このオプションを使用すると、コマンドの実行時に stdin は変更されないままになります。それ以外の場合、stdinは/ dev / nullからリダイレクトされます。
努力する:
xargs -a urls.txt -I{} -P 250 php script.php {}