
パイプラインをよりよく理解しようとしています。コマンドラインに入力すると、次のプロセスがどのくらいかかりますか?睡眠30 |睡眠 40
同時に実行すると40秒ほどになるのでしょうか?
答え1
$ time $(sleep 30 | sleep 40)
real 0m40.004s
user 0m0.001s
sys 0m0.003s
はい。私はパイプが始まり、コマンドが始まるとすぐに出力と入力を実行すると信じています。したがって、コマンドの完了にはできるだけ長い時間がかかります。
返品、パイプラインがいつ実行されるかを予測できません。.それはすべて特定時点のシステムCPUのI/O機能によって異なります。
$ cat file
test
$ time grep test file
test
real 0m0.005s
user 0m0.000s
sys 0m0.003s
$ time grep test file | grep test
test
real 0m0.004s
user 0m0.002s
sys 0m0.002s
答え2
パイプラインの中断された部分は同時に発生し、互いに独立して実行されます(一部のIOが発生しない限り、あなたの場合は発生しません)。
sleep
あなたのプロセスはあなたが発行するのに最も長い時間がかかります。あなたの場合は40秒です。
Stalin Vignesh Kumarが例を示し、これについて詳しく説明します。