VS Code Remote - SSH:"Lockfiles in Tmp" 和 "Use Flock" 之间的区别?

VS Code Remote - SSH: difference between "Lockfiles in Tmp" and "Use Flock"?

我正在尝试使用 VS Code 扩展 Remote - SSH (v0.63.0) 在远程系统上开发 C/C++ 代码。

远程系统是使用 OpenAFS 的数十台 Linux (Ubuntu 14) 台机器的集群。

我运行遇到了问题:

  1. 初始连接:工作正常
  2. 进一步尝试失败,重试时超时

为了解决,我会删除.vscode-server文件夹,更改扩展设置,然后尝试重新连接几次。最终,我了解到两种可能的解决方案:

两者(实际上)有什么区别?哪个更好?


旁白:SSH config

Host foo foo.bar.addr
  HostName foo.bar.addr
  User qux
  ControlMaster auto
  ControlPath ~/.ssh/%r@%h:%p
  ControlPersist yes

<total conjecture>听起来即使服务器关闭,锁也会卡住。所以在重新连接时 vscode 不会启动新服务器(因为锁定)但无法连接到“现有”服务器,因为它已经关闭</total conjecture>

这就是第一个选项 "remote.SSH.useFlock" 的用武之地。它控制 vs 代码是使用 flock 系统调用还是 ln 来锁定文件。设置这将清除您可能遇到的大多数问题,这些问题可能有支持 flock 的问题。

第二个选项 "remote.SSH.lockfilesInTmp" 完全重新定位锁定文件(将它们移动到 tmp),因为即使使用 ln 锁定方法,某些安装(如 SSH)也可能有问题。这里的缺点是这会从实际安装中移动锁定文件。因此,如果存在共享安装的风险(NFS、共享主页、link 到共享区域等),那么 vscode 可能会“错过”锁。

如果 "remote.SSH.useFlock": false 适合你,我会保留它。

如果您需要使用 "remote.SSH.lockfilesInTmp": true,请注意避免 运行 同一安装中的多个服务器。