我试图更好地理解管道。如果在命令行中输入以下过程需要多长时间?睡眠 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)向您展示了示例并进行了详细阐述。