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

如何在SSH断开连接后仍让GCE上的程序保持持续运行

GCE VM实例实现程序脱离SSH持续运行的方案

GCE 提供的 Linux 虚拟机和标准 Linux 发行版环境完全兼容,你已知的 nohup 方案可以直接使用,除此之外还有多种不同稳定性、易用性的方案可选,适配不同使用场景:

1. 临时运行场景:直接使用 nohup

操作最简单,适合临时启动不需要开机自启的程序:

  • 执行命令时添加 nohup 前缀和 & 后缀,将进程放到后台运行,示例如下:
    nohup python3 your_script.py > run_output.log 2>&1 &
    
  • 参数说明:> run_output.log 代表将程序标准输出写入日志文件,2>&1 代表将错误输出也重定向到同一日志文件,末尾的 & 代表将进程切换到后台运行
  • 后续可通过 ps aux | grep 你的程序名 命令查询进程运行状态

2. 需要手动交互场景:使用终端复用工具 tmux

适合需要随时回到程序运行终端查看输出、手动操作的场景,比 nohup 易用性更高:

  • 先安装工具,Debian/Ubuntu 系统执行:sudo apt install tmux -y;CentOS/RHEL 系统执行:sudo dnf install tmux -y
  • 执行 tmux 命令新建一个独立的终端会话
  • 在会话内正常启动你的程序,之后按下 Ctrl+B 再按下 D 即可将会话挂起到后台,此时就算 SSH 断开,会话内的程序也会持续运行
  • 下次重新连接 SSH 后,执行 tmux attach 即可恢复之前的终端会话,直接查看程序运行状态、进行交互操作

3. 生产级稳定运行场景:配置 systemd 系统服务

适合核心业务程序,支持崩溃自动重启、实例开机自动启动,完全不依赖 SSH 会话状态:

  1. 新建服务配置文件:sudo nano /etc/systemd/system/your-app.service
  2. 写入以下配置,按实际情况替换对应参数即可:
    [Unit]
    Description=你的程序功能描述
    After=network.target
    
    [Service]
    User=你的VM实例登录用户名
    WorkingDirectory=你的程序所在目录的绝对路径
    ExecStart=你的程序启动命令的绝对路径
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重载 systemd 配置使新服务生效:sudo systemctl daemon-reload
  4. 启动程序:sudo systemctl start your-app.service
  5. 设置实例开机后自动启动程序:sudo systemctl enable your-app.service
  • 后续可通过 sudo systemctl status your-app.service 查看程序运行状态,通过 journalctl -u your-app.service -f 实时查看程序输出日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:05