我在我的机器上四处浏览,发现了一个悬空的符号链接,它似乎指向一个 IP 地址。
lrwxr-xr-x@ 1 greatone greatone 14 Oct 21 12:36 RunningChromeVersion -> 106.0.5249.119
为什么程序会创建这样的链接?
我在我的机器上四处浏览,发现了一个悬空的符号链接,它似乎指向一个 IP 地址。
lrwxr-xr-x@ 1 greatone greatone 14 Oct 21 12:36 RunningChromeVersion -> 106.0.5249.119
为什么程序会创建这样的链接?
这意味着该链接根本没有指向一个文件——它被“创造性地使用”用于其他目的,很可能充当一个锁定文件,您的一个程序使用它来检测已经运行的相同的程序。链接目标只是一些只有程序本身才能理解的任意值;它并不意味着作为真实文件存在。
正常文件的读取或写入至少需要两个步骤:首先是程序调用
open()
,然后才是read()
,这给其他程序在这两个操作之间运行留下了不希望的机会。尽管大多数操作系统都提供了协调对打开文件的独占访问的功能,但这通常仅限于本地文件——例如,Linux 的flock() 在历史上通过 NFS 并不能很好地工作(这在传统的 Unix 上曾经非常相关) /home 将通过 NFS 或 AFS 从中央服务器共享的环境),并且在 SFTP (SSHFS) 中根本不支持锁定。
另一方面,
symlink()
内核函数将在一个步骤中创建一个具有指定“目标”值的链接(即它是一个原子操作),而readlink()
函数也将在一次调用中读取它的目标——程序总是得到完整的链接目标或“未找到”错误,两者之间没有任何内容。这导致一些程序使用符号链接来检测它们的配置目录何时已被另一个实例使用,即使在不同的机器上也是如此。(“106.0.5249.119”不是 IP 地址——正如文件名所暗示的那样,它是Windows 上极为常见的“major.minor.build.revision”格式的 Chrome版本号。
也就是说,您会看到 Firefox 使用了相同的技巧,它确实将 IP 地址放在其“锁定”符号链接目标中。)
该数字是 自 2022 年 10 月 11 日起桌面版 Chrome 稳定版频道更新
106.0.5249.119
的发布号 。您发现的是一个内部 Chrome 文件,其目的可能是向安装指示其自己的版本号。这并不是真正的符号链接,只是 Chrome 出于自身内部原因滥用了一些符号链接功能。
目前尚不清楚该文件的用途以及为什么 Google 认为这样做是个好主意。它可以用于太多目的,我无法猜测。