Установить ограничение стека навсегда в Ubuntu

Мне нужно постоянно увеличивать лимит стека в Ubuntu 18.04, чтобы новый лимит был установлен для всех пользователей при любых обстоятельствах. Таким образом, установка с ulimit -s ..., в том числе в профиле Bash и аналогичных решениях, не будет работать для меня. Я старался:

  • Установка ограничения в /etc/security/limits.conf, Это не имело никакого эффекта. Я попытался установить жесткие и мягкие ограничения для пользователя root и пользователя. Перезапусков. Ничего не меняется
  • Задавать DefaultLimitSTACK=32768 в /etc/systemd/system.conf а также /etc/systemd/user.conf, 32768 - желаемый предел стека в килобайтах. Диспетчер окон не будет загружаться после перезапуска, вместо этого я попал в некую аварийную корневую оболочку, где большинство команд также перестали работать. Я интерпретировал это как ограничение стека, установленное на 32 КБ вместо 32 МБ, как предполагалось.
  • Задавать DefaultLimitSTACK=33554432 в /etc/systemd/system.conf а также /etc/systemd/user.conf, Система загружается нормально, ulimit -s по-прежнему показывает 8192, ничего не изменилось.

Может кто-нибудь посоветовать, как сделать эту работу? Спасибо!

1 ответ

Вы можете попробовать написать скрипт (где вы устанавливаете ulimit) в каталоге /etc/init.d/.

Синтаксис скриптов в /etc/init.d/ - https://bash.cyberciti.biz/guide//etc/init.d

Эти сценарии выполняются при включении и выключении системы [Специальная функция вызывается для запуска и остановки].

Во-первых, systemd игнорирует параметры, установленные в ulimits, см. https://serverfault.com/a/678861

В моей системе Ubuntu 18 я использую стек 16 МБ и устанавливаю его в /etc/systemd:

user.conf:    DefaultLimitSTACK=16777216

system.conf:  DefaultLimitSTACK=16777216
  • Перезапустите систему или выйдите из сеанса, чтобы новые настройки вступили в силу. Вы можете использовать ulimit -s <value> установить свой стек для сеанса оболочки пользователя на уровне DefaultLimitStack или ниже.

Дополнительно вы можете добавить ulimit -s 16384 в файл .bashrc вашего пользователя. Затем каждый раз, когда начинается его сеанс, стек будет установлен на это желаемое значение.

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