【问题标题】:SSH connection - run program -> howto to keep program running when the ssh-connection is closedSSH 连接 - 运行程序 -> 如何在 ssh 连接关闭时保持程序运行
【发布时间】:2011-11-13 15:02:12
【问题描述】:

简而言之: 当远程服务器连接关闭(shell 窗口关闭)时,保持 perl/python/R/etc 脚本/程序在服务器上运行(通过 ssh 连接)的最优雅的解决方案是什么?

详细说明: 我已经编写了一些脚本,这些脚本将在我们的服务器上运行几天。但是,在通过 linux-shell 通过 SSH 连接到服务器后,启动程序并关闭窗口也会终止程序 - 好的,这不是新的。但是,必须如何配置服务器以在 ssh 连接关闭后保持程序运行? “屏幕”可以是一种解决方案,嗯,但对我来说,打字太多,有时我忘了启动屏幕会话并启动程序

感谢您的建议!

干杯, 雪人

【问题讨论】:

  • 我是正常使用cron,还是放在服务器启动配置中,取决于程序的性质
  • 对于像这样的单次/偶尔长时间运行的事情,我启动一个 tmux 会话,然后运行它。一段时间(小时/天)后可以回来查看它tmux attach

标签: linux ssh


【解决方案1】:

NOHUP - http://en.wikipedia.org/wiki/Nohup

ssh your_server
nohup nice perl your_script &
exit

【讨论】:

    【解决方案2】:

    如果您看到 ssh 的手册页,您可以在“-n”选项下方找到一个示例。

    ssh -n <user>@<server> <cmd> &
    

    【讨论】:

    • 谢谢 alihir,这就是我要找的 :)
    • 如果服务器有密码怎么办?我得到了这个输出[1] 27113 是吗?
    【解决方案3】:

    希望其他人可能会发现此问题并发现此信息有用,有一个名为“screen”的应用程序也可以让您实现这一目标。

    大多数发行版都应该将它们放在 screen 包名下的存储库中。如果我想制作一个屏幕,我只需运行screen -dmS screenName command,它会在不同的“屏幕”中运行命令,可以使用screen -r screenName 访问。您可以随时使用 CTRL+A+D 与屏幕分离。

    我希望有人能从这些信息中受益,因为当您想要运行一个进程但也能够查看它的输出(假设它有任何输出)时它很有用(我的许多应用程序都这样做)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多