Как ulimit вступает в силу на лету?

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

/etc/security/limits.conf

myuser soft nofile 16384
myuser hard nofile 16384

... который не имеет никакого эффекта:

su -
sysctl -p
su myuser
ulimit -n
1024

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

4 ответа

Решение

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

*               soft    nofile          16384
*               hard    nofile          16384

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

ulimit -n 16384

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

session    required     /lib/security/pam_limits.so

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

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

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

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

    • № 16384

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

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

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

ulimit -SHn 16384
Другие вопросы по тегам