VS Code远程SSH开发:断开连接后如何保持进程持续运行?
解决VS Code远程SSH开发断开连接后进程终止的问题
我完全懂你的痛点——远程跑Python脚本时,就怕临时断个网或者关了VS Code,进程直接凉了,之前折腾tmux还踩了坑,确实闹心。结合你的情况,给你几个靠谱的解决方案:
一、正确配置tmux,彻底解决会话持久化问题
你之前用tmux没成功,大概率是VS Code和tmux的衔接没做好,试试这套标准配置:
- 先在Ubuntu Server上确保tmux已安装:
sudo apt update && sudo apt install tmux - 打开VS Code的设置(快捷键Ctrl+,),搜索
terminal.integrated.defaultProfile.linux,把默认终端改成tmux - 之后启动Python脚本时,直接在这个tmux终端里运行
python3 your_script.py就行 - 断开SSH连接后,tmux会在后台稳稳保持会话,下次重新连接VS Code,打开终端输入
tmux attach就能回到之前的界面,进程还在跑
针对你遇到的「终端进程启动失败」问题,再加个配置:在VS Code的远程设置里(左下角点击远程图标→打开远程设置),添加一行:
"terminal.integrated.shellArgs.linux": ["-c", "tmux attach || tmux new"]
这样每次打开终端都会自动尝试连接已有tmux会话,没有的话就新建一个,能有效避免启动失败的情况。
二、用nohup后台运行(适合无交互脚本)
如果你的Python脚本不需要实时输入交互,nohup是个更轻量的选择:
- 启动命令改成:
nohup python3 your_script.py & - 这个命令会让进程忽略SSH断开的挂起信号,后台持续运行,输出默认写到当前目录的
nohup.out文件里,想看日志直接cat nohup.out就行 - 要终止进程的话,先用
ps aux | grep your_script.py找到进程ID(PID),再用kill <PID>结束它
三、优化SSH连接,减少断开概率
有时候断开是因为SSH会话超时被服务器踢掉,你可以在本地的~/.ssh/config文件里加几句配置:
Host your-ubuntu-server-name ServerAliveInterval 60 ServerAliveCountMax 10
意思是本地每隔60秒给服务器发一个心跳包,连续10次没收到回应才断开,能大幅降低意外断开的概率。
总的来说,tmux是最适合远程开发的方案,既能保留终端交互,又能持久化进程,按上面的配置调整后,应该能解决你之前遇到的所有问题。
内容的提问来源于stack exchange,提问作者MikeB2019x




