現象
VSCodeのRemote - SSHでAmazon Linux 2上のソースを開いた際に
Visual Studio Code is unable to watch for file changes in this large workspace
という警告が出ました。
これにより拡張機能C#の自動補完が効かなくなってしまいました。
原因
Linuxのファイルシステム上の監視対象ファイル数上限を超えた際にこのエラーが出ます。
現在の監視対象ファイル数は下記コマンドで確認できます。
$ cat /proc/sys/fs/inotify/max_user_watches
対処方法
下記のコマンドを叩き、監視対象ファイルの数の上限を上げます。
あまり一気に数値を上げ過ぎるとメモリを食いますので、free
コマンド等で様子を見ながら2倍、3倍と段階的に上げるのが良いと思います。
# 32768の部分は任意の数値を指定 $ echo fs.inotify.max_user_watches=32768 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p # 設定値が反映されているか確認する $ cat /proc/sys/fs/inotify/max_user_watches
これで正しく補完が効くようになるはずです。 もし反映されないようであれば、VSCodeを再起動してみるとうまくいくと思います。
inotifyとは?
Linuxカーネルのサブシステムで、ファイルシステムの変更をアプリケーションに通知する機能を持ちます。Linuxカーネルのver2.6.13以降から組み込まれたようです。