Использование команды ulimit только изменяет лимиты ресурсов для текущей оболочки и ее дочерних процессов, а команда sudo ulimit создает корневую оболочку, настраивает ее лимиты, а затем выходит (таким образом, насколько я вижу, никакого реального эффекта нет).
Чтобы превысить 12288, вам нужно настроить параметры ядра kern.maxfiles и kern.maxfilesperproc, а также (по крайней мере, в соответствии с этой записью в блоге , которая является кратким изложением этого обсуждения ) лимит запуска. Вы можете использовать launchctl limit для настройки всех этих параметров одновременно:
sudo launchctl limit maxfiles 1000000 1000000
Чтобы сделать это постоянным (т.е. не сбрасывать при перезагрузке), создайте /etc/launchd.conf, содержащий:
limit maxfiles 1000000 1000000
Then вы можете использовать ulimit (но без sudo) для настройки лимита вашего процесса.
Если этого не происходит, вы можете столкнуться с ограничениями по размеру в ядре. Если ваша модель поддерживает это , то может помочь загрузка ядра в 64-битном режиме .