SSH命令行无法退出

3
我通过ssh连接到另一台服务器并运行一个shell脚本,命令如下: nohup ./script.sh 1>/dev/null 2>&1 & 然后输入exit以退出该服务器。但是它卡住了。该服务器是Solaris系统。
我如何正常退出而不会卡住呢?
谢谢。

这个脚本只是几千个curl命令。 - ablimit
4个回答

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
你可以使用以下命令:

~.

这个命令关闭ssh会话。


1
如果您想在关闭SSH连接后仍然保持远程命令运行,我强烈建议您使用screen并学会分离屏幕。这比留下后台进程要好得多;它还可以让您重新连接并查看进程的运行情况。
由于您没有提供script.sh,我认为我们无法确定命令挂起的原因。

0
sh -c ./script.sh &

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接