V současné době čelím problému v linuxové krabici, kde jako root mám příkazy, které vracejí chybu, protože bylo dosaženo limitu nepozorovaného sledování.
# 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'.`
Trochu jsem googlil a každé řešení, které jsem našel, je zvýšit limit pomocí:
Sudo sysctl fs.inotify.max_user_watches=<some random high number>
Ale nemohl jsem najít žádné informace o důsledcích zvýšení této hodnoty. Myslím, že výchozí hodnota jádra byla nastavena z nějakého důvodu, ale zdá se, že pro konkrétní použití není dostatečná. (např. při použití Dropboxu s velkým počtem složek nebo softwaru, který monitoruje mnoho souborů)
Tady jsou moje otázky:
Je bezpečné zvýšit tuto hodnotu a jaké by byly důsledky příliš vysoké hodnoty?
Ano, je bezpečné zvýšit tuto hodnotu a níže jsou možné náklady [ zdroj ]:
Kontrola maximálního počtu hodinek inotify:
cat /proc/sys/fs/inotify/max_user_watches
Nastavení maximálního počtu hodinek inotify
Dočasně:
Sudo sysctl fs.inotify.max_user_watches=
s vaší preferovanou hodnotou na konci.Trvale ( podrobnější informace ):
fs.inotify.max_user_watches=524288
do nastavení sysctl. V závislosti na vašem systému se mohou nacházet na jednom z následujících míst: /etc/sysctl.conf
/etc/sysctl.d/
, např. /etc/sysctl.d/40-max-user-watches.conf
sysctl -p
(Debian/RedHat) nebo sysctl --system
(Arch)Zkontrolujte, zda byl dosažen maximální počet hodinek inotify:
Použijte tail
s -f
(follow) možnost na jakémkoli starém souboru, např. tail -f /var/log/dmesg
: - Pokud je vše v pořádku, zobrazí se posledních 10 řádků a pauza; přerušit s Ctrl-C - Pokud jste mimo hodinky , selže s touto poněkud kryptická chyba :
ocas: nelze sledovat '/ var/log/dmsg': Na zařízení nezbývá žádný prostor
Chcete-li zjistit, co používá až inotify hodinky
find /proc/*/fd -lname anon_inode:inotify |
cut -d/ -f3 |
xargs -I '{}' -- ps --no-headers -o '%p %U %c' -p '{}' |
uniq -c |
sort -nr
První sloupec označuje počet inotify fds (nikoli počet hodinek ačkoli) a druhý ukazuje PID tohoto procesu [zdroje: 1 , 2 ].