WSL中inotify报错:执行max_user_watches调整命令提示文件不存在
解决WSL中
sysctl: cannot stat /proc/sys/fs/inotify/max_user_watches: No such file or directory错误 这个问题其实很好理解——你用的是Windows 10 Build 1709的WSL,而这个版本的WSL属于WSL 1,它的内核是基于Windows内核的兼容层,并不支持fs.inotify.max_user_watches这个Linux内核参数,所以/proc/sys/fs/inotify/这个路径根本不存在,自然会触发报错。
下面给你两种解决思路,根据你的实际情况选择:
一、升级到WSL 2(彻底解决)
WSL 2使用真正的Linux内核,完全支持inotify相关参数,是最根本的解决办法。不过要注意,WSL 2要求Windows 10 Build 1903及以上(OS Build 18362+),所以你需要先升级Windows版本,之后按以下步骤操作:
- 启用WSL和虚拟机平台组件
打开管理员权限的PowerShell,执行以下命令:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - 重启你的电脑
- 安装微软官方提供的WSL2 Linux内核更新包
- 设置WSL 2为默认版本
回到PowerShell,执行:wsl --set-default-version 2 - 将现有Linux分发版切换到WSL 2
先查看你的分发版名称:
然后执行切换命令(把wsl --list --verbose<分发版名称>换成你实际的名称,比如Ubuntu):wsl --set-version <分发版名称> 2
完成后重新打开WSL,再执行你原来的命令就可以成功设置max_user_watches了。
二、无法升级Windows时的临时 workaround
如果暂时没法升级Windows到支持WSL2的版本,那WSL1里确实没法设置这个参数,你可以针对需要这个参数的程序做调整:
- 把你的项目文件放在WSL自身的文件系统中(比如
/home/你的用户名/下),而不是Windows的C/D盘,WSL1对自身文件系统的文件监听兼容性更好。 - 如果是Node.js相关的工具(比如webpack、live-server),可以设置环境变量启用轮询模式,替代inotify:
或者在启动命令前加上这个变量,比如:export CHOKIDAR_USEPOLLING=trueCHOKIDAR_USEPOLLING=true npm start
内容的提问来源于stack exchange,提问作者Samuel B
相关产品推荐
相关产品推荐

