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