Чтобы значение пережило перезагрузку, его записывают в файл, и система ставит его при каждом старте.
При загрузке служба systemd-sysctl читает файлы *.conf из /etc/sysctl.d, /run/sysctl.d и /usr/lib/sysctl.d и ставит записанные в них значения. В файле — строки вида имя = значение:
Файлы применяются по порядку имён из всех каталогов вместе. Если параметр встречается в двух файлах, остаётся значение из последнего, поэтому имена файлов начинаются с числа. Файл с другим расширением, например .txt или .bak, служба пропускает.
Применить файлы без перезагрузки — sudo sysctl --system. Она читает те же каталоги в том же порядке и печатает каждый файл и каждое значение: по выводу видно, дошла ли до ядра твоя строка.
В /etc/sysctl.d/10-watches.conf стоит fs.inotify.max_user_watches = 65536, а в /etc/sysctl.d/90-desktop.conf — fs.inotify.max_user_watches = 16384. Какое значение будет у параметра после загрузки?
-
Величина значения роли не играет: файлы применяются по порядку имён, и 90-desktop.conf идёт после 10-watches.conf.
-
Спора нет: каждый файл просто ставит значение, и остаётся последнее.
sudo sysctl --systemпоказывает обе строки по порядку.
Файлы применяются по порядку имён, и последнее записанное значение остаётся. 90-desktop.conf идёт после 10-watches.conf, поэтому после загрузки — 16384. Порядок файлов виден в выводе sudo sysctl --system.
Главное в шаге
-
sysctl -wменяет параметр до перезагрузки; на старте ядро начинает со своих значений. -
Постоянное значение — строка
имя = значениев файле*.confв/etc/sysctl.d; при загрузке её ставит systemd-sysctl. -
sudo sysctl --systemприменяет файлы сразу; из двух файлов с одним параметром остаётся значение последнего по имени.