会`ls。 | grep test &` 在后台运行这两个命令,还是只运行最后一个命令?

问题描述 投票:0回答:1

如果我在由两个命令组成的 shell 中运行

ls . | grep test &
,一个命令的输出通过管道传输到另一个命令,那么这两个命令都会在后台运行还是仅运行最后一个命令(grep)?

我尝试在监视进程时在 shell 中运行该命令。我无法从结果中推断出任何东西。

shell command-line process background-process
1个回答
0
投票

它针对整个命令运行。

也就是说,它与

ls . | grep test
对抗,而不是与
ls .
grep test
对抗。

由 shell 创建的管道仍然打开,即使在后台,并且

ls .
命令仍然通过它发送数据。

也许,

(sleep 5 ; ls .) | grep test &
可以让你有更好的理解。

© www.soinside.com 2019 - 2024. All rights reserved.