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

8、【Ubuntu】【VSCode】VSCode 断联问题分析

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

背景

之前 blog
【OS】【Nuttx】【周边】效果呈现方案解析:VSCode 打开外部链接(一)
【OS】【Nuttx】【周边】效果呈现方案解析:VSCode 打开外部链接(二)
分析了 strace 日志中最后 browser.sh 和 code 命令的关系(之间并无联系,主要是通过 Node.js 执行脚本 server-cli.js,code 作为参数传入),但 browser.sh 脚本和 code 命令很像,差别只有一个 --openExternal 选项

后来又分析了下 vscode-client (browser.sh 启动 vscode-client 客户端) 连接 vscode-server 过程,以及信号链如何传递到 Windows VSCode 本地,下面分析个远程服务器上的一个 VSCode 断联问题

VSCode 断联问题

通过 VSCode Remote SSH 连接远程服务器可能经常遇到这种情况,远程服务器和 Windows VSCode 本地端突然断联,连接不上了,但是有时候重启又能恢复,下面来分析下断联问题的原因和解决方法
在这里插入图片描述
首先再说下背景,背景是承接之前 blog 分析的,第三方程序,比如下图的 browser.sh,试图通过 vscode-client 客户端和 vscode-server 主进程通过本地 socket 建立联系,以利用 SSH 隧道向 Windows VSCode 本地端法反向发送请求命令,结果在 vscode-client 和 vscode-server 建立联系的过程,出现了上述的失败问题
在这里插入图片描述
其实这个错误就是 strace 日志里面这条 connect 命令,只不过 strace 展示的 connect 命令是执行成功的
在这里插入图片描述
而这里是 connect 命令执行失败,并且将失败信息打印到了窗口上(成功的话,只能通过 strace 日志去追踪,终端无信息打印)
在这里插入图片描述
之前 blog 说过,这就是 VSCode 的进程间通信方式(IPC),通过本地 Socket 文件(也就是这里找不到vscode-ipc-*.sock 文件)进行通信,是的,这里直接点名是因为这个 socket 文件找不到

在终端输入

lsof /run/user/1000/vscode-ipc-*.sock

可以查看远程服务器中,所有连接 vscode ipc sokcet 的程序如下
在这里插入图片描述
解释下这里面的含义:

  • 首先 COMMAND = node 表示这是 VSCode Server 的主进程(用 Node.js 写的),这里用 which node 就能查出来该命令在 VSCode CLI 目录下(因为该 Shell 环境是 VSCode 打开的,VSCode 会将自己的 CLI 命令路径写到 PATH 里面)CLI 表示 client,客户端的意思
    在这里插入图片描述
  • USER = adminpc 表示用该用户名登录的 VSCode Remote SSH
  • 有多个 .sock 文件存在:表示有多个 VSCode Server 实例在运行,这些 socket 文件都会被 VSCode 实例监听
  • 每个 socket 都处于 LISTEN 状态:表示 IPC 通道已建立,可以接受客户端连接,这里的客户端是指远程环境上的程序,参考之前 blog 【OS】【Nuttx】【周边】效果呈现方案解析:VSCode 打开外部链接(二) 上画的图,不是指 Windows VSCode 客户端
    在这里插入图片描述

再说下 lsof 命令,终端输入

man lsof

可以查看 lsof 命令描述如下
在这里插入图片描述
首先,从其定义可以看出 lsof 命令是列出当前系统中被打开的文件,然后还要结合后面这段描述:列出被进程打开的文件的相关信息,当然这个进程作为使用者,也会作为文件的信息被打印出来,所以命令 lsof /run/user/1000/vscode-ipc-*.sock 也可以理解为列出所有正在使用(打开)了 VSCode IPC Socket 文件的进程,这样就能辅助定位本地 Socket 文件有没有在正常使用

ok,先到这里,下篇 blog 继续

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

相关文章:

  • 石家庄建站公司比价 wordpress 插件下载
  • 北京大兴网站建设首选公司网站建设业务员招聘
  • 网站建设出现乱码是怎么回事做竞争小的网站
  • Xshell效率实战系列二:动态端口转发与多环境切换——从安全访问到毫秒级切换
  • 张家口外贸网站建设如何安装wordpress主题
  • 做旅游网站的目的营销和运营的区别是什么
  • 做微商想做个网站指纹锁在什么网站做宣传好
  • 做网站有个名字叫小廖网业升级
  • 成都全网营销型网站大望路网站建设公司
  • 网站搭建app建站网址导航hao123
  • 网站导航条用什么做广州百度网站搭建
  • 【C++基本功】C++ 选引用与还是指针?彻底详细讲解
  • c语言常量指针和指针常量
  • 网站注销备案查询系统网站建设,h5,小程序
  • 做a小视频网站知名商业网站有哪些
  • 网站标准尺寸一家专门做特卖的网站是什么
  • 网站做有偿广告需要什么有序济南网站建设手机
  • STM32 AFIO时钟什么情况需要开启?
  • 国外比较好的建筑设计网站莱芜做网站公司
  • 整站seo技术搜索引擎优化南充市房地产网官方网站
  • 最新PHP代码加密系统V1.0
  • 公司网站域名如何备案wordpress评论邮件插件
  • 室内设计网站有哪些知乎辽宁丹东建设工程信息网站
  • Java进销存ERP管理系统源码
  • PK confluence,一款国产开源免费的知识库管理工具 - sward,极致轻量简洁
  • 网站建设 6万情女照片做杯子网站
  • 有谁帮做网站网站建设面包屑导航条
  • 网站设置cookie什么意思微信公众号平台小程序登录入口
  • 医院管理系统网站模板wordpress仿站步奏
  • ROS2工具之坐标变换TF !!!!!