По крайней мере, в Linux большинство дистрибутивов используют pam для аутентификации. Один модуль, который поставляется с PAM, является модулем ограничений . Цитирование из README для pam_limits:
The pam_limits PAM module sets limits on the system resources that can be obtained in a user-session. Users of uid=0 are affected by this limits, too.
В результате вы можете установить для каждого пользователя, для каждой группы и ограничения по умолчанию в обеих категориях: жесткие (для корневого каталога это необходимо, и процесс не может запросить более высокие) и мягкие ограничения. Мягкие ограничения обычно устанавливаются ниже жестких ограничений, и приложение может увеличивать их, пока не достигнет жесткого предела.
В вашем случае, если процесс, в котором вы хотите увеличить пределы, запускается как обычный пользователь, вы можете увеличить ограничения для этого пользователя или группы. Например, у меня есть несколько заданий mysql cron на некоторых серверах, которые требуют открытия дополнительных файловых дескрипторов, поэтому я установил это:
$ cat /etc/security/limits.d/mysql.conf
@mysql soft nofile 100000
@mysql hard nofile 200000
Нет ничего, что нужно перезапустить; когда вы су для этого пользователя, вы сразу видите, что новые ограничения вступают в силу.
Еще одна вещь, которую вы можете сделать, если вы работаете в типичной производной системе RedHat, это поместить нужный вызов ulimit в скрипт / etc / sysconfig / $ SERVICE. Например, сценарий инициализации apache называется /etc/init.d/httpd и содержит исходный файл конфигурации / etc / sysconfig / httpd, если он найден. Я нашел, что легче управлять этим, вместо того чтобы редактировать сам скрипт инициализации, потому что скрипты инициализации обновляются при обновлении rpm, но файлы sysconfig обновляются только в том случае, если они не изменены по умолчанию.