У нас есть окно 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
читается оболочками входа в систему, и вы должны закрыть окна активных сеансов, если в графическом интерфейсе. Для удаленного входа в систему это вступает в силу при повторном входе в систему.
Как сказал другой плакат, вам нужно, чтобы sysctl установил значение в работающем ядре. Есть несколько способов установить значение без перезагрузки:
sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system
IMHO последний метод является лучшим, поскольку он воспроизводит порядок, в котором настройки будут применяться во время загрузки (и, таким образом, если у вас возникнет конфликт, это станет очевидным).
Примечание: я не уверен, какую версию CentOS вы используете, но по крайней мере на 7 я столкнулся с проблемой, когда, если dracut по какой-либо причине перестраивает initramfs (например, при установке нового модуля ядра), он будет копировать содержимое /etc/sysctl.* в initramfs, которое затем будет выполнено systemd-sysctl на этом этапе, даже если вы позже удалите эти записи из /etc/sysctl.conf.
В своей среде я отредактировал модуль dracut systemd, чтобы исключить /etc/sysctl.* из этой среды (поскольку эти параметры будут установлены после монтирования rootfs и повторного запуска systemd-sysctl). Это просто ошибка, с которой вы можете столкнуться.