Вопрос или проблема
У меня в файле /etc/sysctl.conf установлен fs.inotify.max_user_watches=524288
Тем не менее, после каждого обновления дистрибутива, и время от времени, мне приходится выполнять “sudo sysctl -p”
- Почему это значение не сохраняется постоянно? И время от времени снижается до 64k?
Многие системные конфигурационные файлы мигрируют в директории именно по этой причине, и это касается sysctl. Вместо редактирования существующего файла, который будет заменен при обновлении, создайте новый файл в /etc/sysctl.d/
Вероятно, эта настройка уже установлена в /etc/sysctl.d/30-nepomuk-inotify-limit.conf
, поэтому вам следует создать файл с именем более высокого приоритета (31? 99?), чтобы он перезаписал существующее значение. (Так что, возможно, используйте 99-local.conf
)
(Примечание: файл README.sysctl в этой директории говорит, что имя файла не имеет значения, но в случае таких коллизий это не совсем так. Я считаю это упущение ошибкой в README.)
Ответ или решение
Решение проблемы с fs.inotify.max_user_watches
в Ubuntu
Если вы сталкиваетесь с проблемами сохранения параметра fs.inotify.max_user_watches
, который вы установили на значение 524288, и замечаете, что с каждой обновлением дистрибутива или время от времени он сбрасывается, данная инструкция поможет вам решить эту проблему.
Причины сброса настройки
Параметр fs.inotify.max_user_watches
отвечает за максимальное количество наблюдателей файловой системы, которые могут быть установлены для пользователя. Конфигурация данного параметра может сбрасываться по нескольким причинам:
-
Изменения в системе: При обновлении дистрибутива Ubuntu могут быть заменены файлы конфигурации, включая те, которые касаются
sysctl
. Такие изменения могут привести к возврату к значениям по умолчанию. -
Конфликты конфигурационных файлов: Ваша настройка в
/etc/sysctl.conf
может конфликтовать с другими конфигурациями, которые располагаются в директории/etc/sysctl.d/
. Например, изначальные конфигурации могут задавать это значение в файле, таком как/etc/sysctl.d/30-nepomuk-inotify-limit.conf
.
Как сделать настройку постоянной
Для того чтобы обеспечивать постоянное сохранение значения fs.inotify.max_user_watches
, рекомендуется использовать следующий подход:
-
Создание нового конфигурационного файла: Вместо редактирования
/etc/sysctl.conf
, создайте новый файл в директории/etc/sysctl.d/
. Это обеспечит, что ваша настройка не будет перезаписана при обновлениях дистрибутива.-
Вы можете создать файл с именем, например,
99-local.conf
:sudo nano /etc/sysctl.d/99-local.conf
-
-
Добавление параметра в файл: В открывшемся файл вставьте строку:
fs.inotify.max_user_watches=524288
-
Применение изменений: После сохранения файла, примените изменения с помощью следующей команды:
sudo sysctl --system
Почему это работает?
Создание нового конфигурационного файла в /etc/sysctl.d/
гарантирует, что ваше значение будет иметь более высокий приоритет, чем вероятные конфликты с настройками, определенными в других конфигурационных файлах. Настройки в данной директории обрабатываются в алфавитном порядке, и если у вас есть файл 99-local.conf
, он будет загружен после других файлов, что позволяет перезаписывать предыдущие настройки.
Заключение
Данное решение обеспечит сохранность вашего параметра fs.inotify.max_user_watches
на заданном уровне, даже после обновления системы. Создание отдельного конфигурационного файла в /etc/sysctl.d/
— это лучший способ управления системными параметрами, поскольку это облегчает дальнейшую поддержку и тестирование изменений. Если вы будете следовать этим шагам, проблема со сбросом данных должна исчезнуть.