0

我正在尝试使用 unix 管道和 FIFO:s(命名管道)设置处理命令的管道。

我还想将进程的输出发送/流式传输到另一个计算节点,它可以在数据流到达后立即开始处理数据流,也就是说,我想“将标准输出通过管道传输到另一台机器上的进程” . 我怎样才能做到这一点?

例如,是否可以设置一个 FIFO,在后台将其内容写入另一个计算节点上的 FIFO,或类似的?

4

2 回答 2

3

您可以使用netcat. 在这个最小的例子中,你可以使用管道cat输出netcat

cat local-filename.txt | netcat remote-hostname 1234

where1234代表将要使用的 TCP 端口。在接收端,您可以使用:

netcat -l 1234 > filename-on-remote-host.txt

where-l表示您正在设置服务器。当原始 netcat 进程完成时,此连接将关闭。如果您需要它继续运行并等待下一次连接,您可以使用以下-k选项:

netcat -kl 1234 | some-receiving-command

在任何情况下,您都可以使用缩写nc而不是完整的netcat

nc -kl 1234 | some-receiving-command
于 2013-10-02T16:03:53.787 回答
1

Yes it is possible, just use ssh for this purpose. The stdin of ssh is sent to the other host. You can use it for example to send data to a different server using tar:

tar cvzf - data | ssh otherhost 'cd /tmp; tar xvzf -'
于 2013-10-02T15:32:13.343 回答