Edited at

Debian で Dropbox が動かない。Please run "echo fs.inotify.max_user_watches=100000…" 云々と言われた

More than 3 years have passed since last update.

Debian に Dropbox をインストールしたのだが、どうも同期がうまくいっていないように見える。

一旦停止して再度コンソールから起動してみた。

$ dropbox stop

Dropbox daemon stopped.
$ dropbox start
Starting Dropbox...Done!

Unable to monitor entire Dropbox folder hierarchy. Please run "echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p" and restart Dropbox to fix the problem.

なんかエラー出た。

エラーメッセージを見る限り、/etc/sysctl.conf に fs.inotify.max_user_watches=100000 という行を追加した後、sudo sysctl -p を実行せよ、とある。

まぁ、実際その通りにすれば問題は解決するのだが、自分が何をしているのかわからないままコマンド実行するのも些か不安であるので、きちんと調べよう。

まず、fs.inotify.max_user_watches とは何ぞ? と思い、ググってみる。これは inotify なるライブラリーの設定のようだ。man を見ると、これは はファイルやディレクトリーの変更を監視するためのライブラリー。恐らく Dropbox はこれを用いてファイルの変更を検知しているのだろう。

fs.inotify.max_user_watches は、どうやら監視対象にできるファイル数の上限を示しているようだ。つまり、Dropbox に入っているファイル数が多すぎる、ということか。

現在の値は

$ cat /proc/sys/fs/inotify/max_user_watches

で見れるようで、私の環境では 8192 だった。

/etc/sysctl.conf はカーネルパラメーターを記述するためのファイルで、ここに

fs.inotify.max_user_watches=100000

と記述することで、監視対象にできるファイル数の上限を100,000に設定できる。Debian の場合は、/etc/sysctl.d/ 以下に別途ファイルを作成し、上記の設定を記述する方が良いようだ。

最後に、sudo sysctl -p を実行して、sysctl.conf または /etc/sysctl.d/ 以下のファイルを読み込み直し、そして Dropbox を再起動すれば問題は解決する。

(Linux に不慣れで、sysctl -p を実行することに不安があれば、単に OS を再起動しても良いと思う。)