Linuxで「upper limit on inotify watches reached」エラーを修正する方法

beginner🐧 Linux2026-05-27| Linux (Ubuntu, Debian, Arch, Fedora, RHEL), Node.js, VS Code, Syncthing

Error Message

Failed to watch /path/to/dir; upper limit on inotify watches reached!
#inotify#sysctl#linux-kernel#devops

30秒でできるクイック修正お急ぎの場合は、以下の2つのコマンドを実行して制限を524,288まで引き上げてください。これは開発用マシンの業界標準であり、非常に複雑な node_modules フォルダも処理できます。

# 修正を即座に適用する
sudo sysctl fs.inotify.max_user_watches=524288

# 設定を永続化する
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

なぜこのエラーが発生したのか?このエラーは通常、Vite、Webpack、Nodemonなどの開発サーバーを起動した際に発生します。また、巨大なモノレポで作業している VS Code ユーザーや、Syncthing のようなバックグラウンド同期ツールを実行している場合にもよく見られます。

Failed to watch /path/to/dir; upper limit on inotify watches reached!

Linuxは、ファイルシステムのイベントを追跡するために inotify というサブシステムを使用しています。アプリケーションがディレクトリの変更を監視するたびに、「ウォッチ(watch)」を1つ消費します。 ほとんどの Linux ディストリビューションのデフォルト設定は8,192という控えめな値です。一見十分なように思えますが、標準的な React や Vue のプロジェクトでは、node_modules 内に簡単に20,000以上のファイルが含まれてしまいます。上限に達すると、カーネルは新しいファイルの追跡を停止し、ホットリロードやIDEの機能が動作しなくなります。

制限を増やす方法### 1. 現在の状態を確認するまず、システムが現在許可しているウォッチの数を正確に確認します:

cat /proc/sys/fs/inotify/max_user_watches

もし数値が8192で、モダンなウェブアプリを開発しているなら、間違いなく上限に達しています。

2. 一時的に制限を増やすすぐに作業を再開したいですか?再起動なしで制限を増やすことができます。この変更が実際に問題を解決するかどうかをテストするのに最適です。

sudo sysctl fs.inotify.max_user_watches=524288

この設定は、コンピュータを再起動すると消えてしまうことに注意してください。

3. 設定を永続化する再起動後もエラーが再発しないようにするには、システム設定を更新する必要があります。

方法 A: /etc/sysctl.conf を更新する管理者権限でファイルを開きます:

sudo nano /etc/sysctl.conf

一番最後に以下の行を追加します:

fs.inotify.max_user_watches=524288

方法 B: 個別の設定ファイルを使用する(推奨)最近のディストリビューションでは、カスタム設定を /etc/sysctl.d/ 内に保持するのが一般的です。これにより、メインの設定ファイルを汚さずに済みます。

echo "fs.inotify.max_user_watches=524288" | sudo tee /etc/sysctl.d/40-max-user-watches.conf
sudo sysctl -p /etc/sysctl.d/40-max-user-watches.conf

どのアプリがウォッチを消費しているのか?どのアプリが最もリソースを消費しているか気になりませんか?以下のワンライナーを実行すると、プロセスの一覧とおおよそのウォッチ数が表示されます。不要なフォルダを監視している「リーク」しているアプリを見つけるのに役立ちます。

find /proc/*/fd -lname anon_inode:inotify -printf '%h\n' | cut -d/ -f3 | xargs -I{} -- ps -p {} -o comm= | sort | uniq -c | sort -nr

PCの動作は重くなりますか?いいえ、それほど影響はありません。各ウォッチは、スワップ不可能なカーネルメモリをわずかに(64ビットシステムで約1KB)消費するだけです。

もし524,288個すべてのウォッチを使用した場合、約512MBのRAMを占有します。16GBや32GBのメモリを搭載した開発用ノートPCなら、誤差の範囲です。ただし、1GB程度の小さなVPSを運用している場合は、もう少し控えめに65,536などの値を試してください。

便利なリンク- inotify(7) マニュアルページ - カーネルがこれらのイベントをどのように処理するかの詳細。- VS Code Linux トラブルシューティング - この特定のエラーに関する公式ドキュメント。

Related Error Notes