145、【OS】【Nuttx】【周边】效果呈现方案解析:VSCode Remote Server

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

背景

上篇 blog
【OS】【Nuttx】【周边】效果呈现方案解析:strace 日志解析(十一)

分析了 egrep 命令找到了 URL 链接内容 http:,然后开始通过 broswer.sh 处理打开网页的请求,并简单分析了下 VSCode 在 ~/.vscode-server/ 路径下自动部署的内容,下面继续来看下

VSCode Remote Server

这里有个细节,上篇 blog 提到终端输入

bash 复制代码
which code

可以查看 VSCode Shell 启动脚本路径

但是之前说过,第一次通过 Windows 上的 VSCode 对远程 Linux 机器进行 Remote-SSH 连接时,VSCode 会自动下载并解压一个服务器端 ~/.vscode-server/bin/哈希值/

注意,这里服务器端出现在的目录是 ~/.vscode-server/bin,而 which code 命令指向的是 ~/.vscode-server/cli/servers

终端输入

bash 复制代码
diff -r ~/.vscode-server/cli/servers/Stable-fabdb6a30b49f79a7aba0f2ad9df9b399473380f/server ~/.vscode-server/bin/fabdb6a30b49f79a7aba0f2ad9df9b399473380f

可以看到两者内容是相同的

diff -r 命令表示递归比较两者及其子目录下的内容

并且会默认将比较的内容打印出来,现在没有内容输出,相当于说明两个目录下的内容是相同的,而 which code 命令指向的是 ~/.vscode-server/cli/servers 下的内容,可以理解 ~/.vscode-server/cli/servers 下的内容是 ~/.vscode-server/bin 的副本拷贝

这里这俩目录的区别在于

  • ~/.vscode-server/bin/ 是 VSCode 服务器代码的安装目录,目录用提交哈希命名,对 VSCode 版本进行唯一标识,多个会话可以共享这个目录
  • ~/.vscode-server/cli/servers 是一个会话的运行时状态目录,其意义不仅仅是代码副本,而是包含版本引用 + 运行时状态 ,比如 which code 命令就指向的是这里

Windows 系统上查看 VSCode 菜单栏上的帮助信息

可以查看 VSCode 上版本号和 Commit 哈希值

可以看到,其中 Commit 哈希值是和 ~/.vscode-server/bin 目录下的哈希值是一一对应的

此时换一个电脑,用另一个 VSCode 版本登录,比如下面这里用的是 Version 1.96.4

可以看到此时 Commit 哈希值发生了变化,在新机器上输入 which code,可以看到新机器上,code 命令指向的是 Version 1.96.4 版本的 Commit 哈希空间

而之前在原机器上,使用 which code,指向的是 Version 1.96.2 版本的 Commit 哈希空间

这里其实涉及到一个多实例的概念,就好比 vscode-server 是一个服务类型,每次新建一个会话,就会有个实例产生(同版本的实例可能会被多个会话复用)

在 Version 1.96.2 机器终端输入

bash 复制代码
echo $PATH

可以看到

VSCode 在进行 Remote SSH 的时候,将自己的实例 server 路径写到了 PATH 环境变量里面(注意这里的 Commit 哈希)

在 Version 1.96.4 机器终端同样输入

bash 复制代码
echo $PATH

可以看到

这里的实例路径(Commit 哈希值)与前面那台机器不同,因为这也是在 VSCode 在进行 Remote SSH 时注入的

注意,虽然这里都输入的是 echo $PATH 命令,但是它们运行在不同的会话中,所以 PATH 已经被隔离开,所以这里 Version 1.96.2 机器看不到 Version 1.96.4 机器的 vscode-server 路径,Version 1.96.4 机器也看不到 Version 1.96.2 机器的 vscode-server 路径

ok,先分析到这儿,下篇 blog 继续

相关推荐
岑梓铭9 天前
考研408《操作系统》复习笔记,第二章《2.3 进程调度》
笔记·考研·操作系统·os
崎岖Qiu14 天前
【OS笔记11】:进程和线程9-死锁及其概念
笔记·操作系统·os
HIT_Weston18 天前
149、【OS】【Nuttx】【周边】效果呈现方案解析:VSCode 打开外部链接(二)
vscode·os·nuttx·文档渲染
崎岖Qiu1 个月前
【OS笔记04】:进程和线程2-进程控制
笔记·操作系统·os
义薄云天us1 个月前
Apache NuttX 入门指南
apache·rtos·nuttx
岑梓铭1 个月前
考研408《操作系统》复习笔记,第四章(1)《文件管理概念》
笔记·考研·操作系统·408·os
缘友一世3 个月前
操作系统PV专题题型突破(考研版)
考研·操作系统·pv·os
wa的一声哭了4 个月前
python基础知识pip配置pip.conf文件
java·服务器·开发语言·python·pip·risc-v·os
HIT_Weston4 个月前
71、【OS】【Nuttx】【启动】启动函数分析
启动·os·nuttx