【问题标题】:How to turn on inotify in WSL2?如何在 WSL2 中开启 inotify?
【发布时间】:2022-01-13 07:17:54
【问题描述】:

inotify 在 WSL1 中工作。然后它在 WSL2 中被故意关闭,原因是 GNU 软件中的一个不受支持的功能现已解决。

如何在 WSL2 中启用或开启 inotify?

【问题讨论】:

  • How can nodemon be made to work with WSL 2? 类似,但 IMO 不是重复的。我已在此处针对您的具体问题提供了答案,但您能否编辑您的问题以澄清“现在已解决的 GNU 软件 [问题]”?
  • 我将简历视为“离题”,但在我看来,inotify 几乎纯粹是开发人员使用的功能。不过,更新您的问题以引用您使用的特定 inotify 用例可能会很好。这可能会减轻一些人“离题”的担忧。谢谢!

标签: windows-subsystem-for-linux inotify


【解决方案1】:

在 WSL2 中支持inotify,但仅在基于 Linux 的 ext4 文件系统上。您可能遇到的问题是它不适用于使用 9P 协议(​​例如 /mnt/c)或指向这些驱动器上任何文件的符号链接安装的 Windows 驱动器。

我不知道这是(根据问题)由于“现在已解决的 GNU 软件中不受支持的功能”,也不是“故意关闭”。据我了解,WSL 团队在晚上 9 点还没有“调查”(他们来自2019 Build Conference 的话)。

确实如此,正如您提到的在通过 drvfs 挂载的 Windows 驱动器上的 WSL1 中工作,并且对于许多开发任务来说,使用 WSL1 仍然是一个可行的选择。当然,只有当您要求您的监视文件位于 Windows 驱动器上时,这才是必需的。另请注意,WSL1 确实为 Linux 文件系统 both 使用了 Windows 驱动器(通过 WSL1 目录中的各种覆盖),所以如果 inotify 对其中一个有效,它可能出于相同的原因对两者都有效(系统调用翻译的相同实现)。

不过,如果它符合您的工作流程,最简单的解决方案是将您的项目移动到 WSL/Linux/ext4 文件系统上的某个位置,例如在您的 $HOME 文件夹下(同样,不是使用符号链接)。

至于如何启用它,我不认为这是可能的。虽然 9P 客户端是开源的,并且包含在 WSL2 内核 Github 项目 here 中,但据我所知,在 Windows 中运行并提供对这些驱动器的访问的服务器仍然是闭源的。

更多详情请见this answer

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 2020-08-24
    • 2023-01-31
    • 1970-01-01
    • 2022-11-11
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多