ssh 上的 Nohup 不会返回

ssh 上的 Nohup 不会返回

我正在努力做

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

我的目标是在服务器上启动该进程,然后立即返回。

它不起作用:作业在服务器上启动了,但是我仍然在 myPc 上得到输出,并且 bash 等待完成然后再要求我输入另一个命令。

为什么?不应该这样!有什么办法可以避免吗?

  • myPc 是RHEL6.2
  • 服务器ubuntu 10.04
  • 两次运行openssh

答案1

只要输入或输出仍处于打开状态,ssh 就会保持连接打开。要解决此问题,请确保输入和输出未打开。

例如,使用ssh -n并重定向您的输出:

ssh -n [email protected] "nohup myscript.sh >/dev/null 2>&1 &"

答案2

是否真的有必要nohup通过 ssh 运行?在我的测试中,我没有发现使用 和不使用 运行命令有任何区别nohup。看来 ssh 无论如何都不会发送 HUP。这与 一样有效nohup

ssh me@server "myBashScript.sh >/dev/null 2>&1 &"

解决方案的关键是重定向stdoutstderr正如已接受的答案中提到的那样。如果没有它,SSH 将从这些描述符中读取,并且仅在它们关闭后返回。

相关内容