如何在EC2服务器上持续运行Python脚本?
我设置了一个亚马逊的EC2服务器。我有一个Python脚本,应该从网上下载大量数据到这个服务器上。我可以通过ssh
在终端运行这个脚本,但我经常会失去ssh
连接。一旦连接断开,脚本就停止了。
有没有什么方法可以让我在终端告诉脚本运行,然后即使我断开连接,脚本仍然可以在服务器上继续运行呢?
4 个回答
1
如果你只是偶尔使用的一个工具,而不是某种服务程序的话,我建议你可以用 screen
来运行它。这样你可以在需要的时候断开连接,之后再打开终端继续使用……或者如果你意外断开了连接,也可以重新连接终端。这个工具应该在你的Linux系统的包管理器里,你只需要搜索 screen
就可以找到。
12
43
你有几种选择。
- 你可以把你的脚本加到
cron
里,这样它就会定期运行。 - 你可以手动运行你的脚本,然后用
nohup
把它放到后台,这样即使你退出了终端,它也会继续运行。 - 你可以使用像 GNU Screen 这样的工具,这样你可以把终端分离,登出后再回来时可以接着上次的工作。我经常用这个方法。
- 比如说:
- 登录到你的机器,运行:
screen
。 - 启动你的脚本,然后可以直接关闭终端,或者用: Ctrl+A, D, D 正确地分离你的会话。
- 断开你的终端连接。
- 过一段时间再连接回来,运行
screen -rD
。你应该能看到你之前的内容,就像你离开时那样。
- 登录到你的机器,运行:
- 比如说:
- 你还可以把你的脚本加到
/etc/rc.d/
里,这样它在启动时就会被调用,并且一直在运行。