Назад | Перейти на главную страницу

Как действует ulimit на лету?

Я добавил 2 строки в

/etc/security/limits.conf

myuser soft nofile 16384
myuser hard nofile 16384

... что не имеет никакого эффекта:

su -
sysctl -p
su myuser
ulimit -n
1024

Важно, чтобы это вступило в силу без предварительного входа пользователя в систему, т.е. как root я запускаю сценарий от его имени.

Добавьте это в /etc/security/limits.conf:

*               soft    nofile          16384
*               hard    nofile          16384

И добавьте что-то вроде этого в / etc / profile, и он должен применяться ко всем учетным записям в системе:

ulimit -n 16384

Однако для того, чтобы такие инструменты, как ssh и su, подчинялись файлу limits.conf, вам необходимо добавить следующее в соответствующие файлы pam.d, если его еще нет, т.е. для su add в /etc/pam.d/su и для ssh добавьте в /etc/pam.d/sshd:

session    required     /lib/security/pam_limits.so

Я считаю, что ваша конкретная проблема может быть решена, просто выполнив указанную выше правку pam.d для соответствующих файлов.

Если все остальное терпит неудачу, ваш скрипт позволяет делать как myuser последующий:

ulimit -SHn 16384

Вы можете попробовать эти строки.

    • файл 16384

И посмотрите, как это работает.

Есть ли какие-то настройки в пользовательских .bashrc или других файлах.

Если изменения в /etc/security/limits.conf не действуют, проверьте, не содержит ли /etc/security/limits.d/ файлы с настройками ограничений, которые отменяют ваши.

Если вам нужно переопределить ограничение, настроенное в файле, расположенном в /etc/security/limits.d/, вероятно, лучше создать в этом каталоге свой собственный файл с именем, которое будет отсортировано по алфавиту позже, чем существующий файл. Система считывает файлы в алфавитно-цифровом порядке, и если существует несколько конфигураций для одного и того же лимита, более поздние настройки имеют приоритет над более ранними.