don*_*tin 14 ulimit windows-subsystem-for-linux parceljs wsl-2
我的设置如下所示:Windows 10, Release 1909 (Build 18363.1082),在 Ubuntu 20.04 环境中使用 WSL2。大多数时候一切都很好,但有些问题我无法解决。
在使用parcel(React bundler) 进行开发期间,我遇到了 bundler 显然同时打开大量文件的问题,并且在某个时候,我遇到了以下问题:
EMFILE: too many open files, open '/home/myusername/Projects/some-project-path/node_modules/@material-ui/icons/esm/RoundedCornerRounded.js'
Run Code Online (Sandbox Code Playgroud)
由于parcel看似不容易支持使用类似的东西graceful-fs,我试图增加在 Ubuntu 环境中打开文件的限制。到目前为止我尝试过的:
ulimit -n 4096(默认情况下是最高的),但显然(到目前为止?)还不够fs.files-max非常高的值/etc/sysctl.conf,但它似乎没有效果(无论sysctl -p是在 重启之后还是重启之后wsl)fs.inotify.max_user_watches,但这似乎也没有效果/etc/security/limits.conf似乎没有效果DefaultLimitNOFILE中/etc/systemd/system.conf可以有效果(所以我这样做,以及)有没有人设法在 WSL2 上的 Ubuntu 20.04 上解决类似的系统?这让我很困惑,它阻止我parcel在这个环境中使用。这真的很遗憾,因为其他一切都运行良好。
所以我发现我在不同地方(可能是/etc/security/limits.conf)的变化产生了某种影响。只是在直接登录时不会。这说明了这一点:
donmartin@SOMEMACHINE:~$ ulimit -Hn
4096
donmartin@SOMEMACHINE:~$ su donmartin
Password:
donmartin@SOMEMACHINE:~$ ulimit -Hn
65536
donmartin@SOMEMACHINE:~$
Run Code Online (Sandbox Code Playgroud)
这意味着:如果我su给我自己的用户,ulimit确实已经被提出来了。但是,如果我登录,就像正常使用Windows终端,这个限制是不生效。现在更困惑了 - 但是 - 我有一个解决我的问题的方法。将我的值设置为 后65536,parcel构建现在可以运行,以我自己的用户身份运行。去搞清楚!我仍然不太清楚现在哪个设置正在改变行为 - 也许有人有关于它是如何工作的和/或我如何将其设置为默认设置的更全面的信息,而无需执行 asu来获取更新的限制。
我必须将以下行添加到/etc/systemd/user.conf:
DefaultLimitNOFILE=65535
Run Code Online (Sandbox Code Playgroud)
正如这里的答案所写:
此外,您可能需要运行此命令(如果使用监视许多文件/文件夹中的更改的应用程序):
sudo sh -c 'sysctl fs.inotify.max_user_watches=524288 && sysctl -p'
| 归档时间: |
|
| 查看次数: |
4954 次 |
| 最近记录: |