Я пытаюсь сделать что-то, что требует большого количества файловых дескрипторов
sudo ulimit -n 12288
так высоко, как снежный барс хочет идти; помимо этого приводит к
/ usr / bin / ulimit: строка 4: ulimit: открыть файлы: невозможно изменить ограничение: неверный аргумент.
Я хочу поднять число намного выше, скажем, 100000. Возможно ли это?
mac
osx-snow-leopard
ulimit
file-descriptors
Крис Пул
источник
источник
echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf
и перезапуск работает для меня в Mavericks.Ответы:
Использование
ulimit
команды только изменяет ограничения ресурсов для текущей оболочки и ее дочернихsudo ulimit
элементов и создает корневую оболочку, корректирует ее пределы и затем завершает работу (таким образом, насколько я вижу, реального эффекта нет).Чтобы превысить 12288, вам нужно настроить ядро
kern.maxfiles
иkern.maxfilesperproc
параметры, а также (по крайней мере, в соответствии с этой записью в блоге , которая является кратким описанием этого обсуждения ) предел запуска. Вы можете использовать,launchctl limit
чтобы настроить все это сразу:Чтобы сделать это постоянным (т.е. не сбрасывать при перезагрузке), создайте
/etc/launchd.conf
содержащий:Затем вы можете использовать
ulimit
(но безsudo
), чтобы настроить ограничение процесса.Если этого не произойдет, возможно, вы работаете с ограничениями размера в ядре. Если ваша модель поддерживает это , может помочь загрузка ядра в 64-битном режиме .
источник
sudo launchctl limit maxfiles 1000000 unlimited
Ни жесткий, ни мягкий предел для «maxfiles» не может быть неограниченным. Пожалуйста, используйте числовой параметр для обоих.launchd.conf
. Я думаю, что если число слишком мало, это может сделать ваш компьютер непригодным для использования. Например, я использовал,limit maxfiles 1024 1024
и мне было очень трудно изменить его обратно.Следующее должно решить большинство решений (и перечислены в порядке их иерархии):
Примечания:
источник
Кажется, что существует совершенно другой метод для изменения лимита открытых файлов для каждой версии OS X!
Для OS X Sierra (10.12.X) вам необходимо:
1.
Library/LaunchDaemons
Создайте файл с именемlimit.maxfiles.plist
и вставьте в него следующее (не стесняйтесь менять два числа (это мягкие и жесткие ограничения соответственно):2. Измените владельца вашего нового файла:
3. Загрузите эти новые настройки:
4. Наконец, проверьте правильность лимитов:
источник
Похоже, что OS X Lion не допустит «неограниченное» в качестве значения:
Предоставление числовых значений для мягкого и жесткого предела делает работу:
источник
-1
качестве значения приводит к12288
. Можно использовать большие числовые значения, напримерsudo launchctl limit maxfiles 15000 150000
. Я не уверен, что эти настройки имеют эффект тогда, хотя.На Маверикс все просто. Как обычный пользователь:
ulimit -n 8192
Вы можете проверить обновленные настройки через
ulimit -a
На моей машине:
источник
echo limit maxfiles 10000 10000|sudo tee -a /etc/launchd.conf
и затем перезагрузить свой компьютерНа OS X 10.13.6 это работает для меня:
источник
Некоторые ограничения не могут быть изменены
ulimit
, потому что они применяются только к текущей оболочке, поэтомуlaunchctl
следует использовать команду для изменения ограничений глобально, напримерОбратите внимание, что применение этих ограничений в
/etc/launchd.conf
(как предлагается в других ответах) больше не поддерживается в последних выпусках macOS. Хотя все еще можно использоватьlaunchd.plist
(см .man launchd.plist
:) такиеplist
файлы конфигурации для каждого пользователя или всей системы, как предложено здесь , там и там .Чтобы сделать эти ограничения постоянными, вы можете использовать
/etc/sysctl.conf
файл и добавить, например:Чтобы изменения вступили в силу, требуется перезагрузка.
Чтобы увидеть текущие ограничения, запустите:
launchctl limit
илиsysctl -a | grep ^kern.max
.Смотрите также: Как сохранить настройки ulimit в macOS?
источник