如何跨(计算)节点使用unix管道?

时间:2013-10-02 14:56:46

标签: unix pipe cluster-computing named-pipes fifo

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

我还想将进程的输出发送/流式传输到另一个计算节点,该计算节点一到达即可开始处理数据流,也就是说,我想“将stdout传输到进程上”另一台机器“。我怎么能这样做?

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

2 个答案:

答案 0 :(得分:3)

您可以使用netcat。在这个最小的示例中,您可以使用:

cat的输出传递给netcat
cat local-filename.txt | netcat remote-hostname 1234

其中1234表示将要使用的TCP端口。在接收方,您可以使用:

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

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

netcat -kl 1234 | some-receiving-command

在任何情况下,您都可以使用缩写nc代替完整netcat

nc -kl 1234 | some-receiving-command

答案 1 :(得分:1)

是的,可以使用ssh来实现此目的。 stdin ssh发送给其他主机。例如,您可以使用tar

将数据发送到其他服务器
tar cvzf - data | ssh otherhost 'cd /tmp; tar xvzf -'