You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS EC2 Ubuntu中编写bash脚本持续运行Python程序

完全对等功能的Bash脚本

你需求的和Windows批处理逻辑100%一致(程序无论因任何原因退出,都立刻无条件重启)的bash脚本写法如下:
创建名为restart_collector.sh的脚本文件,写入以下内容:

#!/bin/bash
# 无限循环,等价于Windows批处理的 :1 + goto 1逻辑
while :
do
    python3 datacollection.py
done

使用步骤

  • 给脚本添加执行权限:chmod +x restart_collector.sh
  • 直接执行脚本即可生效:./restart_collector.sh
实用优化方案

上述基础脚本完全匹配你的原始需求,实际生产环境中可以补充以下优化,避免极端情况影响系统稳定性:

1. 增加重启间隔

如果程序持续秒崩,无限循环会占用大量CPU资源,可添加重启延迟,比如每次退出后等待3秒再重启:

#!/bin/bash
while :
do
    python3 datacollection.py
    sleep 3
done

2. 配置systemd托管(推荐用于EC2生产环境)

裸跑脚本无法实现EC2实例重启后自动恢复任务,也不支持后台运行、日志留存,可通过systemd配置系统服务实现更稳定的托管:

  1. 新建service配置文件:sudo nano /etc/systemd/system/datacollector.service
  2. 写入以下配置(需替换路径和用户为你实际的EC2环境配置):
[Unit]
Description=API数据采集服务
After=network.target

[Service]
# 替换为你的EC2运行用户名,默认Ubuntu镜像的默认用户为ubuntu
User=ubuntu
# 替换为你的datacollection.py脚本所在的目录绝对路径
WorkingDirectory=/home/ubuntu/projects/data_collect
ExecStart=/usr/bin/python3 datacollection.py
# 无论任何退出状态都自动重启
Restart=always
# 重启间隔3秒
RestartSec=3
# 日志输出到系统journal
StandardOutput=journal+console
StandardError=journal+console

[Install]
WantedBy=multi-user.target
  1. 执行以下命令启用服务:
  • 重载systemd配置:sudo systemctl daemon-reload
  • 开启开机自启:sudo systemctl enable datacollector.service
  • 启动服务:sudo systemctl start datacollector.service
  1. 常用运维命令:
  • 查看实时运行日志:sudo journalctl -u datacollector.service -f
  • 停止服务:sudo systemctl stop datacollector.service
  • 重启服务:sudo systemctl restart datacollector.service

内容的提问来源于stack exchange,提问作者Mantra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:15:01