Я добавил 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
Вы можете попробовать эти строки.
И посмотрите, как это работает.
Есть ли какие-то настройки в пользовательских .bashrc или других файлах.
Если изменения в /etc/security/limits.conf не действуют, проверьте, не содержит ли /etc/security/limits.d/ файлы с настройками ограничений, которые отменяют ваши.
Если вам нужно переопределить ограничение, настроенное в файле, расположенном в /etc/security/limits.d/, вероятно, лучше создать в этом каталоге свой собственный файл с именем, которое будет отсортировано по алфавиту позже, чем существующий файл. Система считывает файлы в алфавитно-цифровом порядке, и если существует несколько конфигураций для одного и того же лимита, более поздние настройки имеют приоритет над более ранними.