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

如何在AWS EC2服务器退出登录后持续运行Python脚本?

嘿,这个问题我太熟了!在AWS EC2上跑长期运行的Python脚本,退出SSH登录后还能让它继续跑,有好几种靠谱的办法,我给你挨个说清楚:

方法1:用nohup(最简单直接,零学习成本)

这是最基础的方式,专门用来让命令在用户退出后继续运行。

  • 运行脚本的命令:
    nohup python3 your_script.py &
    
    末尾的&是让脚本在后台运行,nohup会拦截退出信号,保证脚本不会因为你断开SSH而终止。
  • 默认情况下,脚本的输出会被写到当前目录的nohup.out文件里,如果你想自定义日志位置,可以重定向输出:
    nohup python3 your_script.py > my_script_logs.log 2>&1 &
    
    这里2>&1是把错误输出也转到日志文件里,方便后续排查问题。
  • 想查看脚本是否还在运行?用这个命令找进程:
    ps aux | grep your_script.py
    
  • 要停止脚本的话,找到进程ID(PID),然后执行:
    kill <PID>
    
方法2:用screen/tmux(可随时重新连接会话,灵活度高)

如果需要时不时回到脚本的运行界面(比如看实时输出、交互操作),这两个工具就太合适了,它们相当于创建一个"持久化的终端会话"。

用screen的步骤:

  1. 先安装screen(如果是Ubuntu/Debian系统):
    sudo apt update && sudo apt install screen
    
  2. 创建一个新的会话:
    screen -S my_python_session
    
  3. 在这个会话里直接运行你的Python脚本:
    python3 your_script.py
    
  4. 现在你可以按下Ctrl+A,然后松开按D,把这个会话"脱离"出来,之后就算退出SSH,脚本也会在这个会话里继续跑。
  5. 下次登录EC2后,想回到这个会话看情况,执行:
    screen -r my_python_session
    
  6. 想查看所有存在的screen会话:
    screen -list
    

用tmux的步骤(功能比screen更丰富,推荐尝试):

  1. 安装tmux:
    sudo apt update && sudo apt install tmux
    
  2. 创建新会话:
    tmux new -s my_script_session
    
  3. 运行脚本后,按下Ctrl+B,然后松开按D脱离会话。
  4. 重新连接会话:
    tmux attach -t my_script_session
    

tmux还支持分屏、会话共享等功能,长期用的话会很顺手。

方法3:用systemd服务(最稳定,适合生产环境)

如果你的脚本需要长期稳定运行,甚至EC2重启后自动恢复,把它做成systemd系统服务是最佳选择,相当于让系统帮你托管这个脚本。

  1. 创建一个服务配置文件:
    sudo nano /etc/systemd/system/my_long_script.service
    
  2. 粘贴以下内容(根据你的实际情况修改路径、用户名):
    [Unit]
    Description=My Long-Running Python Script
    After=network.target  # 确保网络就绪后再启动脚本
    
    [Service]
    User=ubuntu  # 替换成你的EC2用户名,比如ubuntu或者ec2-user
    WorkingDirectory=/home/ubuntu/my_scripts  # 脚本所在的目录
    ExecStart=/usr/bin/python3 /home/ubuntu/my_scripts/your_script.py  # 脚本的绝对路径
    Restart=always  # 脚本意外崩溃时自动重启
    RestartSec=5  # 崩溃后5秒再重启
    
    [Install]
    WantedBy=multi-user.target  # 多用户模式下启用
    
  3. 保存退出后,重新加载systemd配置:
    sudo systemctl daemon-reload
    
  4. 启动服务:
    sudo systemctl start my_long_script.service
    
  5. 设置开机自启(可选,但推荐):
    sudo systemctl enable my_long_script.service
    
  6. 查看服务运行状态:
    sudo systemctl status my_long_script.service
    
  7. 查看脚本的运行日志:
    journalctl -u my_long_script.service -f
    
    末尾的-f是实时查看日志,按Ctrl+C退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:09:29