Как 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