我正在尝试使用unix管道和FIFO:s(命名管道)设置处理命令的管道。
我还想将进程的输出发送/流式传输到另一个计算节点,该计算节点一到达即可开始处理数据流,也就是说,我想“将stdout传输到进程上”另一台机器“。我怎么能这样做?
E.g。是否可以设置一个FIFO,在后台将其内容写入另一个计算节点上的FIFO或类似的?
答案 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 -'