为什么使用管道时 ssh -f 会创建多个进程?

为什么使用管道时 ssh -f 会创建多个进程?

当我在 Linux 主机上执行

ssh -f 10.10.47.47 "/opt/omni/bin/mbuffer -4 -v 0 -q -I 8024 | /usr/sbin/zfs receive tank/test"

然后我在远程主机上看到

 27349 ?        S  0:00 bash -c /opt/omni/bin/mbuffer -4 -v 0 -q -I 8024 | /usr/sbin/zfs receive tank/t
 27350 ?        S  0:00 /opt/omni/bin/mbuffer -4 -v 0 -q -I 8024
 27351 ?        S  0:00 /usr/sbin/zfs receive tank/test

我原本期望只是看到这个27349过程。

问题

为什么要ssh -f创建另外两个进程?

但是他们仍然搞乱了,mbuffer因为-I 8024它在端口 8024 上设置为监听模式?

答案1

ssh打开一个 shell 并告诉它执行两个程序,mbufferzfs两个程序通过管道连接。为此,shell 需要分叉两个进程,或者您知道它们如何以其他方式执行吗?

我不明白最后一句话。出了什么问题?

相关内容