通过 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.
我从主机 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.