並列命令としてのパイプ

並列命令としてのパイプ

通常、Unixのパイプは2つのコマンドを接続し、最初のコマンドの出力を2番目のコマンドの入力として使用するために使用されます。しかし最近、私はパイプを使って複数のコマンドを並列に実行するというアイデアを思いつきました(これは新しいものではないかもしれませんが、インターネット検索ではあまり見つかりませんでした)。

command1 | command2

これは並列に呼び出されますcommand1command2command2標準入力から読み取らないcommand1場合、または標準出力に書き込まない場合t。これを説明するための最小限の例(対話型シェルで実行してください)

ls . -R 1>&2|ls . -R

私の質問は、パイプを使用してこのように2つのコマンドを並列に実行することに欠点がありますか?このアイデアに私が逃した部分はありますか?

よろしくお願いします。

ベストアンサー1

コマンドパイプラインはすでに並列に実行されています。使用コマンド:

command1 | command2

command1どちらもcommand2始まりました。予約されていてcommand2パイプが空の場合、読み取りを待つのはブロックされます。command1パイプに書き込もうとしていますが、パイプがいっぱいになると書き込むcommand1スペースができるまでブロックされます。それ以外の場合command1と両方がcommand2並列に実行され、パイプに書き込まれ、パイプから読み取られます。

おすすめ記事