我有一个 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