在unix下执行“cat filename | grep诗| wc -l”命令时会使用多少个进程。 会不会有1个进程、2个进程、3个进程……来执行上面的命令。
最佳答案
这实际上取决于 shell。在 bash 中应该有 3 个进程。我在后台运行了 3 个 sleep 来代替这些命令,然后运行 pstree
。这就是我得到的:
> sleep 4s | sleep 4s | sleep 4s & pstree
│ ├─bash───bash─┬─pstree
│ │ ├─3*[sleep]
在子 shell 中:
> ( sleep 4s | sleep 4s | sleep 4s ) & pstree
│ ├─bash───bash─┬─bash───3*[sleep]
│ │ ├─pstree
更新:
这没有正确演示 bash 在执行管道时的行为,因为将它们放在后台可能会影响执行的子 shell 数量。我建议在前台运行它们,然后在观察时检查另一个终端中的进程数。 Bash 可以通过防止不必要的子 shell 的使用来优化管道的执行,可能在较新的版本中。
关于linux - 在unix下执行有管道的命令会使用多少个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794520/