删除 <some command> | netcat 通过 ssh 到后台

Dropping <some command> | netcat to the background via ssh

对于一个项目,我正在使用远程机器 运行 二进制文件并通过 netcat 将输出通过管道传输到日志服务器。

示例:

ssh <user>@<host> -p <port> -o IdentitiesOnly=yes -o PreferredAuthentications=publickey -i key nohup <some long running command> | nc <log_host> <log_port> &

我想要的是命令进入后台后立即退出 ssh 连接。

进程成功进入后台(我相信),但我不知道如何终止 ssh 连接。

我也尝试过使用屏幕,但那是在用这种方式搞砸了很多之后,坦率地说,我很累,真的很困惑,并且很难找出它的各种不同问题。我相信第二组眼睛对于在这一点上取得进展非常重要。

请注意,我尝试了一个更简单的测试命令,但它也不起作用。 ssh 等待整整三秒钟,而不是分叉后台命令并立即终止。

ssh <user>@<host> "nohup sleep 3 && echo test | tee ~/test.log & exit"

我认为这是 ssh 等待来自标准输出和标准错误的 I/O 的问题。

尝试将所有输出重定向到 /dev/null:

ssh user@host "(nohup sleep 3 && echo test | tee ~/test.log) >/dev/null 2>&1 &"