【问题标题】:SSH doesnt exit from command lineSSH 不会从命令行退出
【发布时间】:2011-03-24 13:54:59
【问题描述】:

我 ssh 到另一台服务器并运行类似 nohup ./script.sh 1>/dev/null 2>&1 & 的 shell 脚本

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

如何才能不挂机正确退出??

谢谢。

【问题讨论】:

  • 脚本只是几千个 curl 命令。

标签: bash unix shell ssh exit


【解决方案1】:

我假设这个脚本是一个长期运行的脚本。在这种情况下,您需要在终止 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

【讨论】:

    【解决方案2】:

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

    由于您尚未向我们提供script.sh,我认为我们无法确定该命令为何挂起。

    【讨论】:

      【解决方案3】:

      你可以使用命令:

      ~.
      

      此命令关闭 ssh 会话。

      【讨论】:

        【解决方案4】:
        sh -c ./script.sh &
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          • 1970-01-01
          • 2016-12-12
          相关资源
          最近更新 更多