VS Code远程SSH/Jupyter会话持久化解决方案咨询
解决VS Code远程SSH/Remote Tunnel会话持久化问题
一、针对Jupyter Notebook/Lab的持久化方案
核心思路是让Jupyter服务在远程机器后台独立运行,脱离VS Code的会话依赖:
步骤1:在远程机器后台启动Jupyter服务
用nohup快速启动(适合临时任务):nohup jupyter notebook --no-browser --port=8889 &用
systemd创建常驻服务(适合长期稳定运行):- 创建服务配置文件
~/.config/systemd/user/jupyter.service,填入以下内容:[Unit] Description=Jupyter Notebook Service [Service] Type=simple ExecStart=/usr/bin/jupyter notebook --no-browser --port=8889 WorkingDirectory=/home/你的用户名/你的工作目录 Restart=always [Install] WantedBy=default.target - 启动并启用服务:
systemctl --user daemon-reload systemctl --user start jupyter.service systemctl --user enable jupyter.service
- 创建服务配置文件
步骤2:在VS Code中连接独立内核
打开VS Code的Jupyter扩展,点击右上角「选择内核」,选择「现有Jupyter服务器」,输入远程机器的Jupyter地址(比如http://localhost:8889,需先通过SSH做端口转发:ssh -L 8889:localhost:8889 远程用户名@远程IP)。本地断连后,远程的Jupyter服务和运行的notebook进程会持续运行,重连后直接接回即可。
二、针对独立Python脚本的持久化方案
让脚本在远程后台脱离终端运行:
用
nohup后台运行
在远程终端执行:nohup python3 你的训练脚本.py > training.log 2>&1 &脚本会在后台持续运行,输出内容写入
training.log,断连后进程不会终止。后续可通过VS Code打开远程的training.log查看进度,或用tail -f training.log实时监控。tmux其实也适配VS Code(别局限于终端)
你觉得tmux只适用于终端,但完全可以结合VS Code使用:- 在远程机器启动tmux会话:
tmux new -s training-session - 在tmux会话内启动Python脚本或Jupyter服务
- 断开VS Code连接后,tmux会话会在远程后台保留
- 下次重连VS Code后,打开远程终端执行
tmux attach -t training-session,就能回到之前的会话,进程全程未中断。VS Code的终端完全支持tmux操作,可直接在编辑器内管理会话。
- 在远程机器启动tmux会话:
三、优化VS Code Remote Tunnel的持久化
确保远程机器的VS Code Server进程不会因断连终止:
- 检查Remote Tunnel的systemd服务状态:
如果未启用,执行以下命令设置开机自启:systemctl --user status code-server@你的隧道名称
这样远程机器重启后Tunnel服务会自动启动,且进程不会因本地断连终止。systemctl --user enable --now code-server@你的隧道名称
关键注意点
- 确保远程机器不会自动休眠或关机,可在系统电源设置中改为「永不休眠」。
- 机器学习训练建议将日志写入文件,方便后续回溯进度和排查问题。
内容的提问来源于stack exchange,提问作者Cheney
相关产品推荐
相关产品推荐

