必须先kill残留进程再删远程.vscode-server目录,否则文件被锁、日志持续写入,导致下次连接复用损坏状态或报cannot find module 'vs/server/main'错误。

远程主机断电/重启后 vscode-server 进程还在吃内存
VSCode Remote-SSH 断开后,node 或 code-server 进程常卡在后台持续运行——尤其主机关机没走正常 shutdown 流程(比如直接拔电源、强制重启),这些进程不会被清理,下次连接时可能复用损坏状态,甚至报 Cannot find module 'vs/server/main'。
- 先查残留:运行
ps aux | grep vscode-server | grep $USER,注意过滤掉grep自身 - 精准杀掉:用
kill -9 $(ps aux | grep vscode-server | grep $USER | grep -v grep | awk '{print $2}') - 验证清空:
pgrep -f "vscode-server\|code-server" | wc -l返回0才算干净 - 别跳过这步直接删目录——文件被锁住时
rm -rf ~/.vscode-server会删不干净,日志还可能持续写入
~/.vscode-server/bin/ 下旧版本堆积占几 GB 怎么安全清理
每次 VSCode 更新远程服务端,都会在 ~/.vscode-server/bin/ 下拉一个新 commit hash 目录(如 a1b2c3d...),而 current 软链接指向当前正在用的版本。历史版本不会自动删,长期积累可达数 GB,但全删会导致下次连接失败。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 确认当前版本:
ls -l ~/.vscode-server/bin/current,记下它指向的 hash 名 - 只删非 current 的旧版:
find ~/.vscode-server/bin -mindepth 1 -maxdepth 1 -type d ! -name "$(basename $(readlink ~/.vscode-server/bin/current))" ! -name "current" -exec rm -rf {} + - 别用
-delete替代-exec rm -rf——某些老 shell(如 CentOS 7 默认 bash)对-delete支持不稳定 -
~/.vscode-server/data/Machine/是扩展缓存,可一并rm -rf ~/.vscode-server/data/Machine,不删不影响连接,但省空间
本地和远程必须同步清理,否则连接仍失败
VS Code Remote-SSH 是两端协商机制:本地插件决定该拉哪个 commit 版本,远程目录决定实际跑哪个二进制。只清一边,问题照旧。
- 只删远程
~/.vscode-server,本地缓存仍会触发下载旧版——你看到的 “Installing VS Code Server…” 可能就是旧 commit - 只清本地(比如删
%USERPROFILE%\AppData\Roaming\Code\Remote\),远程残留的旧code-server可能因签名不匹配被新客户端拒绝启动 - 推荐操作顺序:先 kill 远程残留进程 → 清远程
bin/和data/Machine/→ 关闭所有本地 VSCode 窗口 → 删除本地Remote/缓存目录 → 重连
为什么关机后 vscode-server 还在,以及怎么防复发
根本原因是 SSH session 没正常终止,vscode-server 进程失去父进程但未收到 SIGTERM,变成孤儿进程继续驻留。Linux 默认不会主动回收这类进程,尤其当它持有文件描述符或日志句柄时。
- 服务器端加保活:在
/etc/ssh/sshd_config中设ClientAliveInterval 60和ClientAliveCountMax 3,重启sshd,让空闲连接更早被识别为失效 - VSCode 端配合:设置
"remote.SSH.keepAliveInterval": 60,和服务器端对齐,避免中间 NAT 设备丢包导致静默断连 - 别依赖 “Keep Window”:断连后点 “Keep Window” 实际维持的是本地 UI 状态,远程进程仍在跑;务必选 “Close Remote Connection” 或彻底退出 VSCode
- 复杂点在于:有些云服务器(如 AWS EC2)默认启用 TCP keepalive,但值极小(如 30 秒),和 VSCode 的心跳不匹配,反而加剧连接抖动——得两边都调,不能只改一端










