私は現在、Linuxボックスで問題に直面しています。rootとして、inotifyの監視制限に達したためにコマンドがエラーを返します。
# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.`
私は少しグーグルしました、そして私が見つけたすべての解決策は次のように制限を増やすことです:
Sudo sysctl fs.inotify.max_user_watches=<some random high number>
しかし、私はその値を上げることの結果についての情報を見つけることができませんでした。デフォルトのカーネル値が理由で設定されたと思いますが、特定の使用法には不十分であるようです。 (例:多数のフォルダーでDropboxを使用する場合、または多くのファイルを監視するソフトウェア)
だからここに私の質問があります:
その値を上げても安全ですか?値が高すぎるとどうなりますか?
はい、その値を上げても安全です。以下は可能なコストです[ source ]:
inotifyウォッチの最大数を確認するには:
cat /proc/sys/fs/inotify/max_user_watches
inotifyウォッチの最大数を設定するには
一時的に:
Sudo sysctl fs.inotify.max_user_watches=
を実行します。永久に( 詳細情報 ):
fs.inotify.max_user_watches=524288
を追加します。システムに応じて、次の場所のいずれかにある可能性があります。/etc/sysctl.conf
/etc/sysctl.d/
に入れます。 /etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian/RedHat)またはsysctl --system
(Arch)inotifyウォッチの最大数に達しているかどうかを確認します:
古いファイルでは、tail
を-f
(フォロー)オプションとともに使用します。 tail -f /var/log/dmesg
:-すべて問題なければ、最後の10行を表示して一時停止します。 Ctrl-Cで中止-あなたがウォッチから出ている場合、これは失敗します やや不可解なエラー :
テール: '/ var/log/dmsg'を監視できません:デバイスにスペースが残っていません
inotifyウォッチの使用状況を確認するには
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
最初の列はinotify fdsの数を示しますが(ウォッチの数ではありません)、2番目の列はそのプロセスのPIDを示します[ソース: 1 、 2 ]。