Ich habe derzeit ein Problem auf einer Linux-Box, auf der ich als Root-Benutzer Befehle habe, die einen Fehler zurückgeben, weil das Inotify-Überwachungslimit erreicht wurde.
# 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'.`
Ich habe ein bisschen gegoogelt und jede Lösung, die ich gefunden habe, besteht darin, das Limit zu erhöhen mit:
sudo sysctl fs.inotify.max_user_watches=<some random high number>
Ich konnte jedoch keine Informationen über die Konsequenzen einer Erhöhung dieses Wertes finden. Ich denke, der Standard-Kernel-Wert wurde aus einem bestimmten Grund festgelegt, scheint aber für bestimmte Verwendungszwecke nicht geeignet zu sein. (zB bei Verwendung von Dropbox mit einer großen Anzahl von Ordnern oder Software, die viele Dateien überwacht)
Also hier sind meine Fragen:
- Ist es sicher, diesen Wert zu erhöhen und was wären die Folgen eines zu hohen Werts?
- Gibt es eine Möglichkeit, herauszufinden, welche Uhren aktuell eingestellt sind und durch welchen Prozess festgestellt werden kann, ob das erreichte Limit nicht auf eine fehlerhafte Software zurückzuführen ist?
Antworten:
Ist es sicher, diesen Wert zu erhöhen und was wären die Folgen eines zu hohen Werts?
Ja, es ist sicher, diesen Wert zu erhöhen und unten sind die möglichen Kosten [ Quelle ]:
So überprüfen Sie die maximale Anzahl von inotify-Uhren:
Maximale Anzahl von inotify Uhren einstellen
Vorübergehend:
sudo sysctl fs.inotify.max_user_watches=
Sie am Ende mit Ihrem bevorzugten Wert aus.Permanent ( nähere Infos ):
fs.inotify.max_user_watches=524288
in der sysctl - Einstellungen. Abhängig von Ihrem System befinden sie sich möglicherweise an einem der folgenden Orte:/etc/sysctl.conf
/etc/sysctl.d/
, z/etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian / RedHat) odersysctl --system
(Arch)Überprüfen Sie, ob die maximale Anzahl von inotify-Uhren erreicht wurde:
Verwenden Sie
tail
mit der-f
(folgen) Option auf jeder alte Datei, zBtail -f /var/log/dmesg
: - Wenn alles gut ist, wird es die letzten 10 Zeilen zeigen und Pause; Abbruch mit Strg-C - Wenn Sie nicht mehr auf dem Laufenden sind , schlägt dies mit diesem etwas kryptischen Fehler fehl :Um zu sehen, was inotify Uhren verbraucht
In der ersten Spalte wird die Anzahl der Inotify-FDS (nicht die Anzahl der Watches) und in der zweiten Spalte die PID dieses Prozesses angegeben [Quellen: 1 , 2 ].
quelle
I guess very few codes need the values higher than the default
Für Dropbox ist möglicherweise ein höheres Limit erforderlich, je nachdem, wie viele Dateien Sie haben. Ich habe meine ohne Probleme angesprochen. Tatsächlich werden Sie in der Dropbox-Benachrichtigung (die erfolgt, wenn das Limit erreicht ist) ausdrücklich aufgefordert, diese zu erhöhen./etc/sysctl.conf
/etc/sysctl.d
auch auf neueren RedHat-basierten Systemen.