TL;DR
Debian や、Ubuntu ベースである KDE neon などで Dropbox の同期がうまくいかない場合で、CLI から dropbox start
を実行した際に、下記のようなエラーメッセージが表示される場合の対処法について記述する。
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.d/ 以下に、拡張子が .conf のファイルを作成し、その中に
fs.inotify.max_user_watches=100000
と記述する。 -
sudo sysctl --system
を実行する - Dropbox を再起動する。
コマンドで表現すると下記のようになる。
$ echo "fs.inotify.max_user_watches=100000" | sudo tee /etc/sysctl.d/dropbox.conf
$ sudo sysctl --system
$ dropbox stop
$ dropbox start
詳細
Debian に Dropbox をインストールしたのだが、どうも同期がうまくいっていないように見える。
※2020/09/20追記: Ubuntu ベースである KDE neon でも同様の問題が発生した。Ubuntu や、Red Hat 系その他のディストリビューションでも同様の状況が発生しているのかもしれない。
一旦停止して再度コンソールから起動してみた。
$ 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に設定できる。
ファイルを編集した後、sudo sysctl -p
を実行して /etc/sysctl.conf を読み込み直すことができる。その後 Dropbox を再起動すれば問題が解消しているはずだ。
尚、個人的には /etc/sysctl.conf を直接編集せず、/etc/sysctl.d/ 以下に別途 *.conf ファイルを作成し、上記の設定を記述する方が好みである。(TL;DR に記述したコマンドでもそのようにしてある。)
その場合、sudo sysctl -p
ではなく sudo sysctl --system
を実行しなければ設定が読み込まれないため注意されたい。
尚、Linux に不慣れで、sysctl -p
や sysctl --system
を実行することに不安があれば、/etc/sysctl.conf または /etc/sysctl.d/*.conf を編集し保存した後、単に OS を再起動しても良い。