如何在 EC2 服务器上持续运行 Python 脚本?

25

我已经设置了一个Amazon EC2服务器。我有一个Python脚本,可以从网络上下载大量数据到服务器上。我可以通过ssh从终端运行脚本,但经常会失去ssh连接。当我断开连接时,脚本就停止了。

是否有一种方法,可以让我告诉脚本在终端上运行,即使我断开连接,脚本仍然在服务器上运行?

4个回答

43

您有几个选择。

  • 您可以将脚本添加到cron中以定期运行。
  • 您可以手动运行脚本,并使用nohup将其分离+后台运行。
  • 您可以运行类似GNU Screen的工具,并分离终端并退出,然后稍后继续。我经常使用这个工具。
    • 例如:
      1. 登录到您的计算机,运行:screen
      2. 启动您的脚本,然后只需关闭终端或使用Ctrl+A,D,D正确地分离会话。
      3. 断开与终端的连接。
      4. 稍后重新连接,并运行screen -rD。您应该看到您的内容与您离开时一样。
  • 您还可以将脚本添加到/etc/rc.d/中以在引导时调用并始终运行。

12

您可以使用nohup使脚本在后台运行或在断开会话时运行:

nohup script.py &

命令末尾的&明确告诉nohup将您的脚本在后台运行。


1

如果它只是一个你随意运行的实用程序,而不是某种服务守护进程,那么我会在 screen 中运行它。这样,如果你想要断开连接并稍后重新打开终端,或者如果你断开了连接,可以重新连接终端。它应该在你的 Linux 发行版软件包管理器中。只需要搜索 screen 即可。

http://www.gnu.org/software/screen/


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接