如何在服务器上全天候运行 python 脚本?

如何在服务器上全天候运行 python 脚本?

我有一个 python 脚本,需要在 AWS 上全天候运行。我该怎么做?我是否应该像在本地一样运行它:

python3 main.py

或者我应该:

python3 main.py &

我把它放在哪里会有什么不同吗:放在主目录中?还是放在子目录中?这有关系吗?

答案1

您在什么操作系统上运行它?您应该强烈考虑使用本机 init 系统。如果幸运的话,您将使用 systemd,然后编写服务文件非常简单。

[Unit]
Description=My awesome program

[Service]
ExecStart=/usr/local/bin/awesome.py

[Install]
WantedBy=multi-user.target

答案2

还有更多选择:

  • 您可以按照您的建议使用python3 main.py &然后关闭 ssh 管道(使用 without&将使脚本在您关闭 ssh 连接时退出)

  • 您可以为脚本设置一个 cron 作业

  • 有一次我写了一个简单的 bash 脚本,它会监听远程 git 服务器上的新信息,并在每次发生新的更改时运行更新后的脚本

    • 如果您打算更新脚本并进行不同的部署更改,这可能是一个好主意;
    • 我首先会创建一个在启动时作为服务运行的脚本,检查一切是否正常且是最新的,然后它会定期启动我想要的脚本,检查更新;
    • 没有必要使用 git,另一个例子可能是使用rsync;

编辑:

监控脚本:

  • 从 AWS 监控虚拟机使用的资源;
  • 发送一封电子邮件,其中包含系统上当前运行的进程的输出或某种日志;
  • 创建一个迷你网络界面,显示正在运行的服务;
  • 使用 Sensu、Nagios、Datadog 等监控工具。

答案3

您可以使用screen男人

要启动你的程序:

  • 使用 ssh 登录,
  • 启动屏幕:$ screen
  • 启动你的程序:$ python3 main.py
  • 使用组合键 CA(Ctrl+A)+ D 与屏幕分离(屏幕会话中的内容将继续运行)
  • 从 ssh 注销

再次检查程序的执行情况:

  • 使用 ssh 登录(使用与之前相同的用户)
  • 使用以下方式重新连接到现有的屏幕会话$ screen -r

相关内容