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

Как изменить максимальное количество файлов для процесса

Да, я знаю, что этот вопрос задавался раньше, и я пробовал все решения, которые видел, и ни одно из них не работает для меня. Мы работаем в Ubuntu 12, и у нас есть процесс, который автоматически запускается выскочкой при каждой загрузке машины. Я зашел в /etc/security/limits.conf и добавил эти строки:

*                hard    nofile          65000
*                soft    nofile          32000
root             hard    nofile          65000
root             soft    nofile          32000

Я также зашел в /etc/pam.d/common-session и добавил эту строку:

session required        pam_limits.so

Чтобы это работало для неинтерактивных процессов, я также зашел в /etc/pam.d/common-session-noninteractive и добавил ту же строку.

Когда я вхожу в систему как пользователь-администратор (который находится в списке sudo, я назову этого пользователя SUDOUSER), я вижу, что ограничения теперь равны 32000, как и ожидалось, когда я выполняю ulimit -a.

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

Однако после перезагрузки, когда я смотрю на постоянный процесс, который запускается во время выполнения, я получаю идентификатор процесса (скажем, 12345), а затем выполняю cat / proc / 12345 / limits и вижу, что ограничения по-прежнему являются значениями по умолчанию (1024 soft, 4096 хард).

Так что я делаю не так?

Хорошо, я нашел решение. Оказывается, выскочка игнорирует все ограничения в pam.d и limits.conf. Способ сделать это в выскочке - явно установить ограничения в сценарии конфигурирования выскочки для процесса. Итак, предположим, что это процесс myproc, и у вас есть файл /etc/init/myconf.conf. Внутри этого скрипта просто включите эту строку где-нибудь в верхней части:

limit nofile 32000 65000

Убедитесь, что эта строка стоит сама по себе - она ​​НЕ помещается внутри сценария, предварительного сценария и т.д. - это основная строка (или «строфа») сама по себе.

Теперь просто перезапустите процесс и посмотрите ограничения с помощью cat / proc / 12345 / limits.