如果我在由两个命令组成的 shell 中运行
ls . | grep test &
,一个命令的输出通过管道传输到另一个命令,那么这两个命令都会在后台运行还是仅运行最后一个命令(grep)?
我尝试在监视进程时在 shell 中运行该命令。我无法从结果中推断出任何东西。
它针对整个命令运行。
也就是说,它与
ls . | grep test
对抗,而不是与 ls .
或 grep test
对抗。
由 shell 创建的管道仍然打开,即使在后台,并且
ls .
命令仍然通过它发送数据。
也许,
(sleep 5 ; ls .) | grep test &
可以让你有更好的理解。