如果我在一个包含两个命令的shell中运行ls . | grep test &,其中一个命令的输出通过管道传输到另一个命令,那么两个命令都在后台运行还是只在最后一个命令(grep)中运行?我已经尝试在shell中运行该命令,同时监视进程。我无法从结果中推断出任何东西。
ls . | grep test &
iq3niunx1#
它违背了整个命令。也就是说,它针对ls . | grep test运行,而不是针对ls .或grep test运行。shell创建的管道仍然打开,即使在后台,ls .命令仍然通过它发送数据。也许,(sleep 5 ; ls .) | grep test &可以让你给予更好的理解。
ls . | grep test
ls .
grep test
(sleep 5 ; ls .) | grep test &
1条答案
按热度按时间iq3niunx1#
它违背了整个命令。
也就是说,它针对
ls . | grep test
运行,而不是针对ls .
或grep test
运行。shell创建的管道仍然打开,即使在后台,
ls .
命令仍然通过它发送数据。也许,
(sleep 5 ; ls .) | grep test &
可以让你给予更好的理解。