- Це
maxfiles 256
від launchctl limit maxfiles
обмеження для кожного процесу?
Так. launchctl limit maxfiles
друкує м'які та жорсткі межі для кожного процесу, про які повідомляється getrlimit(2)
, чия сторінка man:
Ліміт ресурсів визначається як м'який та жорсткий. Коли а
перевищується м'який межа, процес може приймати сигнал (наприклад, якщо
час процесора або розмір файлу перевищено), але його буде дозволено
тримати виконання, поки не досягне жорсткої межі (або не модифікує свій ресурс
межа).
getrlimit(2)
мабуть, там, де вбудована команда оболонки ulimit
отримує свою інформацію.
- Чому
launchctl limit maxfiles
відрізняється від kern.maxfiles
і kern.maxfilesperproc
?
launchctl limit maxfiles
повідомляє про м'які та жорсткі межі, що запускаються для процесів. Запускається, очевидно, встановлює м'який межа 256 і "необмежений" жорсткий ліміт, що насправді означає, що воно обмежене лише kern.maxfilesperproc
ядром, а не launchd
.
kern.maxfiles
- обмеження загальної кількості дескрипторів файлів у всій системі; загальна сума всіх відкритих файлів для всіх процесів плюс усіх файлів, які ядро відкрило для власних цілей.
- Який ліміт (
maxfiles 256
або kern.maxfilesperproc: 10240
) застосовується для програми, яку вручну запускає користувач із програм?
Додаток, запущений користувачем, який запускає додаток із графічного інтерфейсу, успадковує накладений м'який ліміт 256 та "необмежений" жорсткий ліміт, тому його жорсткий ліміт фактично буде kern.maxfilesperproc
, якщо припустити, що в системі достатньо безкоштовних дескрипторів файлів, що додаток може досягти межі, перш ніж вся система потрапить kern.maxfiles
.
Процеси (додатки) також можуть використовувати системні дзвінки, щоб регулювати їхні обмежені обмеження, коли вони запущені. Тож м'який ліміт 256 - це лише типовий час запуску, і ваш додаток / процес може негайно збільшити свій власний м'який ліміт.