Згідно з документацією на ядро , /proc/sys/file-max
це максимальна, загальна, загальна кількість дескрипторів файлів, які ядро виділить перед задушенням. Це обмеження ядра, а не ваш поточний користувач. Таким чином, ви можете відкрити 590432 за умови, що ви один в режимі очікування (режим однокористувача, не працює демонів).
Зауважте, що документація застаріла: файл був proc/sys/fs/file-max
давно. Дякую Мартіну Джамбону за те, що він це вказав.
Різниця між м'якими та жорсткими межами відповідає тут, на SE . Ви можете підвищити або знизити м'який ліміт, як звичайний користувач, якщо ви не перевищуєте жорсткий ліміт. Ви також можете знизити жорстку межу (але ви не можете підняти її знову для цього процесу). Як суперпользователь, ви можете піднімати і опускати як жорсткі, так і м'які межі. Схема подвійного ліміту використовується для забезпечення системної політики, але також дозволяє звичайним користувачам встановлювати тимчасові обмеження для себе та пізніше їх змінювати.
Зауважте, що якщо ви спробуєте опустити жорстку межу нижче м'якої межі (а ви не суперпользователь), ви EINVAL
повернетесь (Недійсний аргумент).
Отже, у вашому конкретному випадку ulimit
(що таке саме ulimit -Sf
) говорить, що у вас немає чіткого обмеження розміру файлів, написаних оболонкою та її підпроцесами . (це, мабуть, хороша ідея у більшості випадків)
Ваш інший виклик, ulimit -Hn
звіти про -n
межі (максимальну кількість відкритих дескрипторів файлів), а НЕ-f
межа, тому м'який межа здається вище , ніж жорсткий межа. Якщо ви ввійдете, ulimit -Hf
ви також отримаєте "необмежену кількість".
/proc/sys/fs/file-max
.