code-server提示System limit for number of file watchers reached解决办法

参考:

https://stackoverflow.com/questions/55763428/react-native-error-enospc-system-limit-for-number-of-file-watchers-reached
https://blog.csdn.net/weixin_42375768/article/details/118637237
https://github.com/cdr/code-server/issues/628

起因:

几天前更新文章后发现在cloudflare构建失败了,因为highlights.js,所以在Docker部署的code-server上准备clone我的博客仓库进行修改测试。结果出现

1
Error: ENOSPC: System limit for number of file watchers reached ......

工作目录下的文件太多,无法实时监控文件的变化。同时vscode报出警告:“VSCode报警:无法在这个大型工作区中监视文件更改。”

解决办法(假的)

注意我这里踩坑
我是在docker下的code-server容器里执行的

  1. 编辑sysctl.conf
    1
    sudo vim /etc/sysctl.conf
  2. 在底部添加一行
    1
    fs.inotify.max_user_watches=524288
  3. 保存退出后执行应用
    1
    sudo sysctl -p
    结果出现了权限不足的提示
    1
    sysctl: permission denied on key "fs.inotify.max_user_watches"

原因

原来docker会继承主机上的一些设置文件,为了防止影响全局,上述文件在docker中会被设置为read-only。所以需要到主机上去更改以上配置。主机更改完成后,docker也就自动继承了。

解决办法(真的)

在宿主机下操作
编辑sysctl.conf

1
sudo vim /etc/sysctl.conf

在底部添加一行

1
fs.inotify.max_user_watches=524288

保存退出后执行应用

1
sudo sysctl -p

在宿主机以及容器上查看max watches

1
2
$ cat /proc/sys/fs/inotify//max_user_watches 
524288

问题解决~