【发布时间】:2016-09-15 02:12:01
【问题描述】:
我使用 SSH 连接到我的 AWS EC2 实例并运行需要很长时间才能完成的代码。我发现如果我的本地计算机休眠(或者即使我让它无人看管),SSH 连接就会挂起(这本身并不是致命的),但这似乎终止了我使用 SSH 启动的 EC2 实例上的代码。
另外,我使用 SSH 来本地监控远程代码的异常,所以即使有办法告诉远程进程在 SSH 消失后保持活动状态,我仍然需要一种方法来本地查看进程的输出因为它继续运行(没有 SSH)。
SSH 挂断后,如何让代码在我的 AWS EC2 实例上继续运行;如何监控这样一个过程的输出?
【问题讨论】:
-
您可以安装“screen”并在其中运行您的进程,在您断开与 ssh 的连接后,它将继续运行并附加输出,您可以返回该进程“screen -r”或者您可以使用 nohup 分离进程并将所有输出重定向到文件以查看其输出,如下所示: nohup command 2>&1 > ./process.log &
-
@Mahakala:使用
nohup我什么都看不到,我没有得到提示,所以我什至无法在服务器上启动我的代码!我错过了什么吗?你能多谈谈screen吗? -
是的 nohup 从终端和标准输入中分离出来,因此无法输入。看看屏幕,这取决于你运行的是 apt-get screen 或 yum install screen。之后,只需像往常一样运行屏幕命令工作,您就可以退出它并轻松返回(ctrl+a d,表示按 control 和 a,然后按 a 从中分离)。请参阅此处的教程以获取有用的快捷方式:rackaid.com/blog/linux-screen-tutorial-and-how-to
-
不加评论的反对票是没有帮助的。
-
SSH 可能仍会终止,但不会影响进程在屏幕内运行,它会进入后台,因此您可以轻松地 ssh 回到计算机并恢复屏幕会话。如果您想让 ssh 保持活动状态,您可能需要检查 ServerAliveInterval ssh 选项,我在这方面没有取得太大成功。
标签: ssh amazon-ec2