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

Да, я знаю, что этот вопрос задавался раньше, и я пробовал все решения, которые видел, и ни одно из них не работает для меня. Мы работаем в 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 мягкие, 4096 жесткие).

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

1
задан 4 December 2015 в 19:31
1 ответ

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

limit nofile 32000 65000

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

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

1
ответ дан 3 December 2019 в 23:55

Теги

Похожие вопросы