Який зв'язок між "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?


Ви не отримали задовільних відповідей на сторінці команд?
Andrew U.

@AndrewU. launchctl сторінка керівництва не згадує межа, ulimit сторінка керівництва не згадує launchctl або launchd.
Howard

Відповіді:


10

У оболонці ulimit забезпечує "контроль над ресурсами, доступними для оболонки, і процесам, запущених нею" (див man bash ). Тому вона стосується тільки оболонки і її дітей. Ліміти для запускаються пов'язані з нею і процесами, якими вона керує. Вони є окремими.

Окремі програми можуть встановлювати власні ліміти ресурсів, викликаючи стандартні бібліотечні програми C ulimit() або getrlimit() і setrlimit(). Деякі обмеження ресурсів не можуть бути підвищені, якщо процес не запущений як суперкористувач.

Як практичний приклад, я налагоджую великі програмні проекти, а обмеження за замовчуванням для кількості відкритих файлів не є достатньо великим. У моєму файлі .bashrc є такі:

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

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


1
Щоб докладно розібратися з цим: налаштування ulimit за замовчуванням виводяться з launchctl limit; хоча користувач може змінювати число ulimit, однак вони не можуть перевищувати launchctl limit жорсткі межі.
Howard

це буде скинуто під час перезавантаження
engineerDave
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.