【问题标题】:How to remotely run a program with SSH independent of my current computer如何独立于我当前的计算机使用 SSH 远程运行程序
【发布时间】:2013-08-27 07:41:01
【问题描述】:

所以我想从我的桌面运行一个程序,但我想让我的桌面“忘记它”,这样如果我的桌面崩溃或关闭它就不会影响 SSH 程序。

换句话说:我希望在远程计算机上独立于我发送任务的计算机执行任务。

我为什么要这样做?因为我在一台巨大的计算机(64 核计算机)上执行一项巨大的任务,这应该需要几天的时间来评估,但我不希望我现在的计算机不得不等待它。上次我的桌面卡住了,我失去了所有的进度。

我可以想象这个问题已经被回答了一百万次了,但我不知道我要搜索什么术语,也不知道这个过程叫什么。

谢谢。

【问题讨论】:

  • 使用nohup 命令。
  • @user000001 所以在我使用 ssh 登录并转到相关目录后,我应该使用“nohup ./myprog param1 param2 param3 > output.txt”之类的内容执行程序吗?
  • 是的。并使用nohup ./myprog param1 ... > output.txt & 将在后台执行

标签: linux bash ubuntu ssh remote-access


【解决方案1】:

一些方法

  • 使用nohup
  • 使用屏幕

使用屏幕

Ubuntu:sudo apt-get install screen

 screen 

然后在您丢失 ssh 会话之后。

再次登录 ssh,然后

screen -r 

这将恢复 ssh 会话屏幕。

欲了解更多信息man screen

【讨论】:

  • screen 对于交互式计算比批处理更有用。
  • 当然,但他表示如果他被踢出 ssh 会话,他不想失去任务进度。在这种情况下,screen 是工作的理想人选。
  • 我将“进度”理解为“计算的执行”,而不是“部分输出”
  • 屏幕正是我想要的。非常感谢:)
  • @SamerAfach,很高兴它有帮助!
【解决方案2】:

你可以使用(在远程大铁上)batch(1) 命令,因为你想要batch processing:

  local% ssh remotebigmachine
  remotebigmachine% batch << EOB
     ./myprog param1 param2 param3 > output.txt
  EOB
  remotebigmachine% exit

在上面,local% 和 remotebigmachine% 都是 shell 提示符(实际上它们是不同的)。

顺便说一句,对于运行很多天的批处理计算,编写一些application checkpointing 是值得的(因为即使是超级计算机也可能会出现断电或硬件问题。

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    相关资源
    最近更新 更多