Как установить и понять fs.notify.max_user_watches

13

Я не понимаю лучший способ установить fs.inotify.max_user_watchesс sysctl. На самом деле, я не понимаю многое из того, что здесь происходит, кроме того, что мне нужно установить количество файлов, которые могут просматриваться определенным процессом.

Я считаю, что я могу увидеть максимальное количество пользователей с помощью этой команды:

cat /proc/sys/fs/inotify/max_user_watches

Насколько я понимаю, некоторые люди предлагают изменить /proc/sys/fs/inotify/max_user_watches, открыв /etc/sysctl.confв редакторе и добавив к нему следующее:

fs.inotify.max_user_watches=524288

Затем запустите sudo sysctl -p- предположительно - обработать изменения, внесенные в файл.

Другие предлагают запускать такие команды:

sudo sysctl -w fs.inotify.max_user_instances=1024
sudo sysctl -w fs.inotify.max_user_watches=12288

Я знаю, что -wозначает запись, но что пишется и где? Просто эта команда меняется /proc/.../max_user_watches?

Какой из двух подходов, описанных выше, является лучшим? Я понимаю, что 524288 и 12288 - это разные числа, но я не понимаю разницы между эффектом бега -pи -w.

ccalvert
источник

Ответы:

10

sysctl -wзаписывает значения параметров ядра в соответствующие ключи /proc/sys:

sudo sysctl -w fs.inotify.max_user_watches=12288

пишет 12288в /proc/sys/fs/inotify/max_user_watches. (Это не эквивалентно, это именно так; заинтересованные читатели могут straceэто увидеть сами.)

sysctl -p

загружает настройки из файла /etc/sysctl.conf(по умолчанию) или любого файла, указанного после -p.

Разница между обоими подходами, за исключением разных источников записываемых ими параметров и значений, заключается в том, -wчто параметры меняются только до следующей перезагрузки, тогда как сохраненные в них значения /etc/sysctl.confбудут применяться снова при каждой загрузке системы. Мой обычный подход состоит в том, чтобы использовать -wдля проверки значений, а затем, когда я уверен, что новые настройки в порядке, запишите их /etc/sysctl.confили файл /etc/sysctl.d(обычно /etc/sysctl.d/local.conf).

Подробности смотрите на страницах руководства sysctlи sysctl.conf( man sysctlи man sysctl.confв вашей системе).

Стивен Китт
источник