Какая связь между `launchctl limit` и` ulimit`?

11

В файлах запуска системы / сценариях запуска оболочки нет конфигурации ulimit.

ulimit -a шоу:

-u: processes                       1064
-n: file descriptors                256

launchctl limit шоу:

maxproc     2048           2048           
maxfiles    2048           2048

Я смутно помню, что пределы launchctl должны совпадать с выводом ulimit оболочки, я могу ошибаться.

Есть ли связь между пределами lauchctl и ulimit?

Говард
источник
Разве вы не получаете удовлетворительные ответы на справочной странице команд?
Эндрю У.
@AndrewU. На странице руководства launchctl не упоминается ограничение, на странице руководства ulimit не упоминается launchctl или launchd.
Говард

Ответы:

10

В оболочке ulimit обеспечивает «контроль над ресурсами, доступными для оболочки и запускаемыми ею процессами» (см. man bash). Следовательно, это относится только к оболочке и ее дочерним элементам. Ограничения для launchd связаны с ним и процессами, которыми он управляет. Два отдельных.

Отдельные программы могут устанавливать свои собственные ограничения на ресурсы, вызывая подпрограммы Standard C Library ulimit()или getrlimit()и и setrlimit(). Определенные ограничения ресурсов не могут быть повышены, если процесс не выполняется от имени суперпользователя.

В качестве практического примера я отлаживаю большие программные проекты, и ограничение по умолчанию для количества открытых файлов в оболочке недостаточно велико. В моем файле .bashrc у меня есть следующее:

# Increase the upper limit on the number of open files:
ulimit -n 1024

Теперь мой отладчик не будет жаловаться, что он не может открыть все нужные ему файлы. Очевидно, что это не должно повлиять на запуск.

ithos67
источник
1
Чтобы уточнить это: настройки ulimit по умолчанию получены из launchctl limit; хотя пользователь может изменить номера ulimit, однако они не могут превышать launchctl limitжесткие ограничения.
Говард
это будет сброшено при перезагрузке
engineerDave