Какая команда / файл конфигурации управляет ограничениями открытого файла в OS X? Есть ли другая команда для OS X 10.5 / 10.6 / 10.7? Варианты Я исследую ниже ulimit
, sysctl
иlaunchctl
«Слишком много открытых файлов», по-видимому, является распространенной ошибкой в Leopard, возможно, в других версиях OS X:
Существует много (связанных?) Способов просмотра ограничений открытого файла:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 2048
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 512
virtual memory (kbytes, -v) unlimited
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 1024 2048
maxfiles 2048 4096
$ sysctl -a | grep files
kern.maxfiles = 32768
kern.maxfilesperproc = 16384
kern.maxfiles: 32768
kern.maxfilesperproc: 16384
kern.num_files: 2049
В некоторых из приведенных выше сообщений было заявлено, что они могут быть изменены с помощью следующих команд:
sudo launchctl limit maxfiles 16384 32768
sudo ulimit -n 32768
sudo sysctl -w kern.maxfilesperproc=16384
sudo sysctl -w kern.maxfiles=32768
Однако из вышеперечисленных команд только sysctl
команды имеют какой-либо очевидный эффект (то есть, ulimit -n
и не launchctl limit
показывают изменений после того, как вышеупомянутые команды были введены, хотя sysctl -a
действительно показывают запрошенные изменения).
Соответствующие места для изменения этих параметров для ОС:
/etc/sysctl.conf
/etc/launchd.conf
Я также обнаружил один ответ, который гласит, что ulimit
контролирует только текущую оболочку.
Как я могу увеличить максимальные / максимальные открытые файлы в MacOS?
Следующее должно решить наиболее распространенные проблемы (и перечислены в порядке их иерархии):
Заметки:
источник
Простыми словами:
Команда
ulimit
обеспечивает «контроль над ресурсами, доступными оболочке, и процессами, которые она создает» (см .:help ulimit
иman bash
). Ресурсы, предоставляемые оболочке, ограничены пределами системных ресурсов.launchctl
Контролирует максимальное потребление системных ресурсов текущего процесса (см:man setrlimit
иman launchctl
). Максимальные значения ограничены пределами ядра.В
sysctl
управлении ядром пределов (смman sysctl
и настройка ядро Limits из BSD ).Чтобы увеличить лимиты, вы можете использовать каждую из команд, в зависимости от проблемы.
Смотрите также: Какова связь между `launchctl limit` и` ulimit`?
Для проблемы со слишком большим количеством открытых файлов это зависит от того, какой именно мягкий или жесткий предел был достигнут (будь то скрипт локальной оболочки, глобальный скрипт
root
, выполняемый приложением, или все процессы одновременно). Стоит увеличить все ограничения (оболочка, launchd и ограничения ядра).Чтобы постоянно увеличивать лимиты, см .: Как постоянно контролировать максимальное потребление системных ресурсов на Mac?
источник