背景:VS Code Server 为什么会越积越大
VS Code Remote-SSH / Dev Containers 的机制:客户端每升一次级,服务端就会下载一份对应 commit 的完整 server 到 ~/.vscode-server/bin/<40位commit>/,其中包含独立的 Node 运行时(~120M)、node_modules(~290M)、内置扩展(~290M)。旧版本目录永不自动删除,于是两三年的机器上积累十几个版本、膨胀到几个 G。
核心判断逻辑:一个版本"能不能删"= 有没有进程在引用它;一个版本"该不该留"= 它多久没被用过了。前者用 proc 扫描(铁证),后者用 data/Machine/ 标记文件的时间线。
找到vscode-server的存放文件夹
vscode-server服务端的存放路径在
/root/.vscode-server
3.6G /root/.vscode-server
34M /root/.vscode-server/extensions # 已安装扩展
47M /root/.vscode-server/extensionsCache # 扩展 VSIX 下载缓存
117M /root/.vscode-server/data # 运行数据
3.4G /root/.vscode-server/bin # ★ 主目标:版本目录
解读:bin/ 占 94%,其余都是零头 —— 清理重点立刻锁定。
查看目录中的信息
查看目录大小
~/.vscode-server# du -h --max-depth=1 bin
180M bin/91fbdddc47bc9c09064bf7acf133d22631cbf083
703M bin/a44adf7f53e00964ab890f9f8758a334f1fc15bc
673M bin/e4c7e7b1d6d060162f4aa7f8225271b67ce1df75
223M bin/618725e67565b290ba4da6fe2d29f8fa1d4e3622
182M bin/19e0f9e681ecb8e5c09d8784acaa601316ca4571
629M bin/8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e
206M bin/6f17636121051a53c88d3e605c491d22af2ba755
217M bin/bf9252a2fb45be6893dd8870c0bf37e2e1766d61
233M bin/07ff9d6178ede9a1bd12ad3399074d726ebe6e43
181M bin/17baf841131aa23349f217ca7c570c76ee87b957
3.4G bin
查看创建日期(保留最新的,删除很久以前的)
~/.vscode-server# du -sh --time bin/*/ | sort
180M 2025-01-09 20:07 bin/91fbdddc47bc9c09064bf7acf133d22631cbf083/
182M 2025-05-07 13:05 bin/19e0f9e681ecb8e5c09d8784acaa601316ca4571/
223M 2025-12-10 07:58 bin/618725e67565b290ba4da6fe2d29f8fa1d4e3622/
703M 2026-09-03 05:35 bin/a44adf7f53e00964ab890f9f8758a334f1fc15bc/
为什么新版这么大? 拆解当前版本:node_modules 288M + 内置扩展 289M + node 118M —— 新版 server 自带的 node_modules/内置扩展越来越大,而 2025 年的老版本只有 ~180M。
一行反推当前 commit(实战最好用)
CUR=$(basename "$(dirname "$(readlink /proc/$(pgrep -f 'out/server-main.js' | head -1)/exe)")")
echo "在用版本: $CUR"
删除方法与命令
铁律(写在文章开头最醒目位置)
- 绝不删"在用版本",否则当前会话立即崩溃;
- staging 原则:先 dry-run 打印清单,肉眼确认后再动手;
- hash 必须动态获取,不要从文章里照抄;
- 旧客户端重连会自动重新下载对应 commit(180M~700M),网络差的机器建议保留最近 1~2 版。
方案 A:手工逐个删(最直观,适合少量)
cd /root/.vscode-server/bin
du -sh e4c7e7b1d6d060162f4aa7f8225271b67ce1df75 # 删前确认大小
rm -rf e4c7e7b1d6d060162f4aa7f8225271b67ce1df75
多个一起:
rm -rf 8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e \
07ff9d6178ede9a1bd12ad3399074d726ebe6e43 \
618725e67565b290ba4da6fe2d29f8fa1d4e3622
一行流极速版(反向保留)
cd /root/.vscode-server/bin && ls -d */ \
| grep -v '^a44adf7f53e00964ab890f9f8758a334f1fc15bc/$' \
| xargs -r rm -rf
> ⚠️ 行内的 hash 必须替换成当前正在使用的版本hash。
删除后验证
ls /root/.vscode-server/bin/ # 应只剩在用版本
du -sh /root/.vscode-server
df -h /