Как постоянно увеличить лимит стека без перезапуска

Мне нужно увеличить размер стека по умолчанию в Linux. Как я знаю, обычно есть два пути:

  • ulimit -s size
  • /etc/security/limits.conf

Метод ulimit работает только до тех пор, пока я вошел в систему.

limit.conf будет работать после перезапуска.

Есть ли возможность увеличить лимит без перезапуска?

4 ответа

Что не так с редактированием вашего .bashrc файл, чтобы сделать ulimit -s size каждый раз, когда вы начинаете терминальную сессию?

Linux (и POSIX-совместимые системы в целом) наследуют текущие ограничения процесса от существующих процессов при запуске нового процесса (с использованиемfork()илиexec()). В результате вам просто нужно будет изменить ограничения для всех существующих процессов , которые уже запущены в вашей системе. Файлы конфигурации просто определяют значения для начальных процессов после загрузки системы, а все остальное наследует текущие значения родительских процессов.

Зачем вам увеличивать лимит стека всего? Все ли ваши существующие процессы по какой-то причине немедленно требуют увеличения места в стеке?

Если вам действительно нужно изменить ограничения какого-либо процесса после того, как этот процесс уже запущен, вы можете сделать это с помощью командыprlimitкоторый использует интерфейс ядраint prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit)за кулисами. Это требуетCAP_SYS_RESOURCEдля многих случаев использования, поэтому вам часто нужно запускать это какrootна практике.

Если вы хотите сделать это программно, вы можете использовать setrlimit() функция.

Limits .conf не требуется перезапуск.

Для работы ему просто нужен новый сеанс.

Вам необходимо выйти и войти.

Другие вопросы по тегам