当前位置: 首页 > news >正文

16、【Ubuntu】【VSCode】VSCode 断联问题分析:问题解决

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【VSCode】VSCode 断联问题分析:UID 补充
最后补充了下 UID 的说明,下面回归问题本身

VSCode 断联问题

回归问题本身
在这里插入图片描述
首先,这里是尝试用 xdg-open 命令去打开一个链接,前面一系列 blog 【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(十一) 分析了由于是 SSH 客户端远程登录,没有桌面应用可以用来打开链接,此时检测到当前环境为 VSCode Server,便尝试用 VSCode IPC Socket 与 VScode 主进程取得联系,想通过 SSH 隧道反向从 Windows 打开该链接,然后结果在连接 VSCode IPC Socket 时出了问题,发现连接不上了
在这里插入图片描述
然后用 lsof 命令查询当前登录用户下,已建立的 Socket 通信,发现有如下这些
在这里插入图片描述
虽然这里有很多 Socket 文件,却没有报错中提到的以 aed2 结尾的 Socket 文件
在这里插入图片描述
从这儿可以得出一个结论:当远程的 VS Code Server 试图通过本地 IPC Socket 与主进程通信,但这个 IPC Socket 文件不存在

这个 IPC Socket 文件命名来源于环境变量 VSCODE_IPC_HOOK_CLI ,在终端输入

echo $VSCODE_IPC_HOOK_CLI

可以打印出当前终端所使用的 VSCode IPC Socket 如下(问题出现时的环境太久已经被破坏了,现在是新的环境,不影响分析说明)
在这里插入图片描述
关于 VSCODE_IPC_HOOK_CLI 提几个点:

  • 首先,VSCODE_IPC_HOOK_CLI与终端会话相关的环境变量,不是全局的,只在通过 VS Code Remote-SSH 启动的终端中被设置,并且只对那个终端及其子进程有效,比如上面那个终端的 Socket 文件是以 9689 结尾的,如果再新建一个新的 Bash Shell
    在这里插入图片描述
    再打印,可以看到就是一个全新的 Socket 文件了
    在这里插入图片描述
  • 另外,VSCODE_IPC_HOOK_CLI 是由 VSCode 的远程服务器组件(VSCode-Server) 在客户端通过 Remote-SSH 插件连接,或新建终端时,动态注入到集成终端的启动环境中的,VSCode-Server 会为每个特定终端会话创建一个唯一,临时的 Socket 文件,并将这个 Socket 文件的路径再通过环境变量 VSCODE_IPC_HOOK_CLI 写入到该终端进程的环境中,然后 VSCode 就可以使用这个 Socket 文件与该终端内的进程进行双向通信

VSCODE_IPC_HOOK_CLI 指向一个不存在的的 Socket 文件路径,说明这个终端曾经通过 VS Code Remote-SSH 连接过,VSCode-Server 注入了这个变量,但后来 VSCode-Server 与 Windows VSCode 远程客户端断开了连接,这个终端的 Socket 文件被删除,但 Shell 还在运行(Shell 进程本身被设计为在断开后继续运行,防止意外中断长时间运行的任务,影响用户体验),环境变量仍然保留在内存中,这就是残留环境变量问题,相当于现在的终端是一个僵尸会话:该终端保留着旧的环境,但对应的 IPC 通道已经不存在了

所以解决办法就是关闭原来的 Shell 进程,比如主动输入命令 exit ,或者光标操作删除终端
在这里插入图片描述
然后退出 Windows VSCode 客户端,然后重新进入,就可以用新的 IPC 通道进行通信了,或者直接新建个终端也是可以的

当然,未来这个 BUG 也可能被修复掉,通过终端生命周期管理,ok,先分析到这里,下篇 blog 继续

http://www.dtcms.com/a/566636.html

相关文章:

  • ESP32多传感器数据采集与传输系统
  • 中小企仓储数字化转型的破局之道
  • 邢台移动网站建设报价seo外包
  • 损失函数系列:focal-Dice-vgg
  • 网站建设的技巧下载的网站模板怎么改
  • 桔子seo网邢台快照优化
  • 做网站 杭州建设美团网站
  • 网站太花哨icp备案后要建网站吗
  • VTK教程-VTK-9.5源码编译详细教程
  • 西安网站建设公司排行榜用wordpress制作表单
  • 用阿里云服务器做盗版小说网站吗管理网站模板下载
  • 英飞凌 LITIX™ Interior:汽车内饰氛围灯解决方案
  • 美团网站网站建设发展网站定制一般价格多少
  • 网站公司图片wordpress 评论双击
  • C 标准库 - <errno.h>
  • 劳务公司网站建设WordPress前端分离
  • 杭州网站做的好公司哪家好wordpress登录页名
  • 合肥网站制作开发旅游网站名称设计
  • 郑州做网站 汉狮网络怎样推广自己的app
  • 西安做网站程序泉州做网站的公司
  • 前端Tabs切换导致的数据问题
  • 中专旅游管理专业职业发展指南
  • 微网站管理平台wordpress 主题 最简单
  • 彩票网站是怎么做的南宁做网站开发的公司有哪些
  • 网站为什么开发appc mvc制作网站开发
  • 做服装招聘的网站有哪些群辉怎么做视频网站
  • 佛山顺德容桂网站制作asp网站建设案例
  • 解决Grid布局下el-table自适应缩小失败的问题
  • 企业做网站应该注意的问题北京排名seo
  • 基础展示营销型型网站网站建设中 英语