Как постоянно увеличить лимит стека без перезапуска
Мне нужно увеличить размер стека по умолчанию в 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 не требуется перезапуск.
Для работы ему просто нужен новый сеанс.
Вам необходимо выйти и войти.