如何在AWS EC2 Ubuntu上24×7稳定运行多个Python脚本并实现开机自启?
Telegram Bot 脚本高可用及开机自启解决方案
一、脚本崩溃自动恢复方案
推荐使用Ubuntu系统自带的systemd服务管理工具,无需额外安装依赖,可实现脚本崩溃自动重启、状态监控、日志统一管理,比手动维护screen会话稳定很多,配置步骤如下:
- 为每个Python脚本单独编写systemd服务单元文件,文件存放路径为
/etc/systemd/system/,例如第一个bot的服务文件命名为tg-bot-1.service,示例配置如下:
[Unit] Description=第1个Telegram Bot服务 After=network.target [Service] # 替换为你的EC2实例实际用户名,Ubuntu默认用户为ubuntu User=ubuntu # 替换为你的脚本实际存放目录 WorkingDirectory=/home/ubuntu/telegram-bots # 替换为你的Python解释器路径(用虚拟环境的话写虚拟环境内的Python路径)和脚本绝对路径 ExecStart=/usr/bin/python3 /home/ubuntu/telegram-bots/bot1.py # 配置崩溃自动重启,只要进程退出就自动拉起 Restart=always # 崩溃后间隔5秒再重启,避免频繁启动报错 RestartSec=5 # 日志输出到系统日志,方便后续排查问题 StandardOutput=journal+console StandardError=journal+console [Install] WantedBy=multi-user.target
- 剩余5个bot按照同样规则编写对应的服务文件,修改文件名、描述、脚本路径即可。
- 执行以下命令加载新配置并启动服务:
- 重载systemd配置:
sudo systemctl daemon-reload - 启动单个服务:
sudo systemctl start tg-bot-1.service - 设置服务开机自启:
sudo systemctl enable tg-bot-1.service - 查看服务运行状态:
sudo systemctl status tg-bot-1.service - 实时查看服务日志:
sudo journalctl -u tg-bot-1.service -f
二、定时重启后自动运行脚本实现
你提到的每日定时重启+重启后自动运行脚本的需求完全可以实现,操作如下:
- 只要按照上文步骤给所有bot服务都执行了
systemctl enable命令,系统重启后会自动拉起所有bot脚本,无需额外配置。 - 设置每日定时重启:
- 执行
sudo crontab -e编辑root用户的定时任务 - 新增一行配置(示例为每天凌晨3点重启,可根据需求修改时间):
0 3 * * * /sbin/shutdown -r now
- 保存退出后定时任务立即生效。
注意事项
- 脚本内所有文件读写操作建议使用绝对路径,避免开机启动时工作目录不匹配导致报错
- 若使用Python虚拟环境,需将
ExecStart中的Python路径替换为虚拟环境目录下的bin/python3绝对路径 - 配置完成后记得关闭之前screen会话里运行的bot进程,避免重复启动冲突
内容的提问来源于stack exchange,提问作者Mantra
相关产品推荐
相关产品推荐

