У нас есть окно CentOS, которое я пытаюсь увеличить максимальное количество файлов, которые пользователь может открыть. В настоящее время, когда я бегу, ulimit -Sn
я получаю 1024
и ulimit -Hn
дает 4096
. Мне нужно это число около 6000.
В /etc/sysctl.conf
я поставил fs.file-max = 100000
. У /etc/security/limits.conf
меня есть следующий набор:
username soft nofile 6000
username hard nofile 65535
Я вышел и снова вошел как, username
но все еще не вижу своих изменений. Что мне нужно, чтобы изменить это значение?
Все , что я в /etc/security/limits.d
это 90-nproc.conf
. Я также убедился, что ulimit не вызывается в моем .bash_profile или .bashrc.
Когда я запускаю, sysctl -p
он выплевывает настройки, которые я хочу, и показывает значение, fs.file-max
которое я хочу. Но когда я бегу ulimit -Sn
, я получаю 1048. Если я пытаюсь бежать, sysctl --system
я получаю error: Unknown parameter "--system"
.
Ответы:
Чтобы заставить
/etc/sysctl.conf
читать снова бегиsysctl -p
.Файл
/etc/security/limits.conf
читается оболочкой входа в систему, и вы должны закрыть окна активных сессий, если в GUI. Для удаленных входов это вступает в силу при повторном входе.источник
fs.file-max
- максимальное количество открытых файлов в системе. Это жесткий лимит, и он не будет отражаться наulimit
звонках в вашем случае.Как сказал другой автор, sysctl должен установить значение в работающем ядре. Есть несколько способов установить значение без перезагрузки:
ИМХО последний метод самый лучший, так как он повторяет порядок, в котором параметры будут применены во время загрузки (и, таким образом, если у вас возникнет конфликт, это станет очевидным).
Примечание: я не уверен, какую версию CentOS вы используете, но по крайней мере на 7 я столкнулся с проблемой, когда, если dracut перестраивает initramfs по какой-либо причине (например, при установке нового модуля ядра), он будет копировать содержимое /etc/sysctl.* в initramfs, которое затем будет выполнено systemd-sysctl на этом этапе, даже если вы позже удалите эти записи из /etc/sysctl.conf.
В моей среде я отредактировал модуль systemd dracut, чтобы исключить /etc/sysctl.* из этой среды (так как эти настройки будут установлены после монтирования rootfs и запуска systemd-sysctl снова). Это просто ошибка, с которой вы можете столкнуться.
источник