【问题标题】:How to run script on Amazon EC2 without keeping an ssh pipe open?如何在不打开 ssh 管道的情况下在 Amazon EC2 上运行脚本?
【发布时间】:2014-09-27 03:11:25
【问题描述】:
我构建了一个脚本,用于将历史数据记录到 Amazon Redshift 实例中。该脚本可能需要运行很长时间,可能需要超过 24 小时才能运行完成。
我尝试通过 ssh 连接到我的 EC2 实例并从那里运行脚本,但是几个小时后我离开笔记本电脑或关上盖子并且管道损坏,在脚本运行完成之前停止脚本。
如何让脚本在我的 EC2 上运行,而不必担心它会过早停止执行?
【问题讨论】:
标签:
amazon-web-services
ssh
amazon-ec2
【解决方案1】:
nohup yourshellcommandhere &
将在后台运行,不需要您激活交互式 ssh 会话。
【讨论】:
-
-
@johncorser - 命令的 & 背景。如果您希望能够返回并查看控制台输出,则可以执行此操作的另一种方法是在 screen 会话中运行它。 screen 包几乎在任何 Linux 发行版中都可用。
【解决方案2】:
就像提到的@johncorser,使用Screen:
您可以稍后注销并重新连接屏幕。
yum install screen 或 apt-get install screen
然后只需输入screen。
它会给你一个“虚拟”外壳,你可以“分离”它。
尝试:
screen
sleep 999
CTRL-a then d
您可以注销并重新登录,然后执行screen -r 以重新连接虚拟终端。
大多数屏幕热键以CTRL-a(小写a)开头,然后是一些字母。
如果您只是要学习一个,请学习CTRL-a, ?,它会显示帮助屏幕并列出其他键。
另一个非常有用的热键:
CTRL-a, c:创建另一个虚拟终端
CTRL-a, n:循环浏览所有虚拟终端
记住CTRL-a, ?,然后全部尝试:)