SSH不会退出命令行

时间:2010-08-03 06:52:22

标签: bash unix shell ssh exit

我ssh到另一台服务器并运行像这样nohup ./script.sh 1>/dev/null 2>&1 &

的shell脚本

然后键入exit退出服务器。然而它只是挂起。服务器是Solaris。

如何在不挂的情况下正确退出?

感谢。

4 个答案:

答案 0 :(得分:7)

我认为这个脚本是一个长期运行的脚本。在这种情况下,您需要在终止ssh会话时从要关闭的终端分离进程。

实际上,您已经完成了大部分工作,将stdoutstderr重新分配给/dev/null,但是您没有为stdin执行此操作。

我使用了以下测试用例:

ssh localhost
nohup sleep 10m &> /dev/null &
^D 
# hangs

虽然

ssh localhost
nohup sleep 10m &> /dev/null < /dev/null &
^D 
# exits

我推荐使用优秀的gnu screen,这将为您提供此服务。

哦,您是否考虑过直接运行脚本而不是shell?即:

ssh user@host script.sh

答案 1 :(得分:1)

如果您在关闭SSH链接后尝试远程运行命令,我强烈建议您使用screen并学会分离屏幕。这比留下后台进程要好得多;它还可以让您重新连接并查看流程的最新动态。

由于您没有向我们提供script.sh,我认为我们无法确定该命令为什么会挂起。

答案 2 :(得分:0)

sh -c ./script.sh &

答案 3 :(得分:0)

您可以使用命令:

~.

此命令关闭ssh会话。