SSH上的Nohup不会返回


11

我正在尝试做

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

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

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

为什么呢 不应该!有什么办法可以避免这种情况?

  • myPc是 RHEL6.2
  • 服务器是ubuntu 10.04
  • 都跑 openssh

Answers:


12

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

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

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

如果我仍然想myscript.sh给我输出,但是ssh会话在脚本完成后仍然终止,该怎么办?就我而言,脚本本身启动nohup进程,然后返回。我的印象是ssh -T可以帮助我做到这一点。
Gauthier

@Gauthier然后运行没有nohup的脚本。
迈克尔·汉普顿

我做。该脚本以nohup和&开头其他命令,然后终止。但是ssh不会返回。脚本中调用的命令将标准输出重定向到文件。哦,但不是stderr和stdin,这可能是为什么吗?
Gauthier

你有它!输入和输出必须重定向。
迈克尔·汉普顿

我不明白的是,如果我实际登录并获得tty,启动启动nohup&命令的脚本,那么我将被允许从ssh会话注销。它不会抱怨有开放的输入和输出。那ssh -t不是应该模仿的东西吗?
Gauthier
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.