- Есть
maxfiles 256
отlaunchctl limit maxfiles
предела в процессе?
Да. launchctl limit maxfiles
печатает мягкие и жесткие ограничения для каждого процесса getrlimit(2)
, о которых сообщает справочная страница:
Лимит ресурса указывается как мягкий и жесткий лимит. Когда мягкий предел превышен, процесс может получить сигнал (например, если превышено время процессора или размер файла), но будет разрешено выполнение до тех пор, пока оно не достигнет жесткого предела (или не изменит свой ресурс предел).
getrlimit(2)
очевидно, где встроенная команда оболочки ulimit
получает информацию.
- Почему
launchctl limit maxfiles
отличается отkern.maxfiles
аkern.maxfilesperproc
?
launchctl limit maxfiles
сообщает о мягких и жестких ограничениях на процессы, которые запускает наложение на процессы. launchd, по-видимому, накладывает мягкий предел в 256 и «неограниченный» жесткий предел, что на самом деле означает, что он ограничен только kern.maxfilesperproc
ядром, а не launchd
.
kern.maxfiles
ограничение на общее количество файловых дескрипторов во всей системе; общая сумма всех открытых файлов для всех процессов плюс все файлы, которые ядро открыло для своих собственных целей.
- Какой лимит (
maxfiles 256
илиkern.maxfilesperproc: 10240
) применяется для приложения, которое запускается пользователем вручную из Приложения?
Приложение, запускаемое вручную пользователем, запускающим приложение из графического интерфейса, унаследует мягкое ограничение на запуск, равное 256, и «неограниченное» жесткое ограничение, поэтому его жесткое ограничение будет эффективно при kern.maxfilesperproc
условии, что в системе достаточно дескрипторов файлов, что приложение может достичь своего предела, прежде чем вся система попадет kern.maxfiles
.
Процессы (приложения) также могут использовать системные вызовы для настройки своих мягких ограничений, когда они запущены. Таким образом, мягкое ограничение 256 является просто значением по умолчанию во время запуска, и ваше приложение / процесс может немедленно увеличить свой собственный мягкий предел.