通过 ssh 发送 tee 命令

Send tee command via ssh

我从主机 1 向主机 2 发送 tee 命令:

ssh user@host2 '/path/run |& tee myFile.txt'

我使用 tee 以便将二进制文件的输出添加到 myFile.txt

我遇到的问题是过了一段时间后,我想在没有大量打印输出的情况下重新获得对本地主机的控制权。所以我按 CTRL+C。这让 host2 上的进程继续 运行,这是我想要的,但它会停止 tee 进程本身,因此文件不会被填充。

我尝试用 2>&1 myFile.txt' & 替换 |& tee myFile.txt' 但没有用。

如何确保文件继续填充到 host2 上,同时重新控制我在 host1 上的会话?

使用 nohup、screen 或 tmux 作为进程后台。

如果你想将结果记录在某个文件中(使用 nohup 中的 IO 重定向),你需要将所有管道包含在 nohup 中。它不使用 shell 扩展,因为参数只有 COMMAND ARGS,所以使用 sh 是一个好方法:

ssh user@host2 'nohup sh -c "/path/run |& tee myFile.txt" &'

但请注意,nohup 将断开终端与命令蚂蚁的连接,它可能会失败。有用的是将它直接重定向到文件:

ssh user@host2 'nohup sh -c "/path/run &> myFile.txt" &'

灵感来自 SO answer.