提高 WSL2 下的 nofile 限制

Raising the nofile limit under WSL2

我不是您所说的高级 linux 用户,所以对于一个可能很愚蠢的问题,我深表歉意。

我正在尝试使用 WSL2 提高我的 UBUNTU 20.04 发行版的 NOFILE 限制,遵循本指南:cannot-increase-open-file-limit-past-4096-ubuntu

但是,当我尝试修改相应的 .conf 文件时,我得到了权限被拒绝的错误。 当尝试从 windows 和 VsCode 这样做时,我得到:

Failed to save 'system.conf': Command failed: "C:\Users\sague\AppData\Local\Programs\Microsoft VS Code\bin\code.cmd" --file-write "c:\Users\sague\AppData\Roaming\Code\code-elevated-mjlcag" "\wsl$\Ubuntu-20.04\etc\systemd\system.conf" Error using --file-write: EPERM: operation not permitted, open '\wsl$\Ubuntu-20.04\etc\systemd\system.conf'

当尝试在 WSL2 终端(使用 windows 终端)中使用 nano 这样做时,我得到:

 Error writing /etc/systemd/system.conf: Permission denied

请帮忙,我受困于此 :') 我很抱歉这可能是一个非常菜鸟的问题

嗯,老实说,你 犯了一些新手错误,但别担心 - 即使你克服了这些错误,你在 WSL 并不容易。

  1. 首先,您试图以普通用户身份在 nano 中编辑系统文件,导致 Permission denied。解决方案:改用 sudo nano /etc/systemd/system.conf。但请参阅下文 (3),了解为什么这最终行不通。

  2. 其次,您正试图在 VSCode 下以普通用户身份编辑 WSL 系统文件。这只是行不通,因为 VSCode 总是 运行 设计为普通用户。有可能在 sudo 下达到 运行,但这可能不值得付出努力。请注意,当 运行 在 VSCode 中使用“Remote - SSH”扩展(类似于您现在使用的“Remote - WSL”)时,这也是一个限制。

  3. 您正在尝试修改 WSL 下的 systemd 配置,其中没有 systemd 支持,因此即使您成功编辑了文件,也没有打算做任何事情。

  4. 你的下一次尝试可能是(对我们大多数人来说都是如此)尝试通过 /etc/security/limits.conf 提高 ulimit, 正确的方法,但需要 WSL 下的技巧。该文件是一个 PAM 构造,并且......好吧,PAM 运行 在登录时,我们不在 WSL 中“登录”,因此 PAM 通常不会被调用。

如我所述 in this answer on Ask Ubuntu (with great assistance from a number of answers in this Github thread) 的骇人听闻的解决方案是对 /etc/security/limits.conf 进行修改,然后通过 sudo 将其作为您自己的返回来强制 PAM 对其进行处理用户来自:

sudo su $USER

或可能

sudo su - $USER # if you need to run as a login shell

Github 线程中还有一些其他建议,如果这些咒语对您来说不太管用的话。