- Является ли
maxfiles 256
из launchctl limit maxfiles
для каждого процесса?
Да. launchctl limit maxfiles
печатает мягкие и жесткие ограничения для каждого процесса, как сообщает getrlimit(2)
, на странице руководства которого написано:
A resource limit is specified as a soft limit and a hard limit. When a
soft limit is exceeded a process may receive a signal (for example, if
the cpu time or file size is exceeded), but it will be allowed to con-
tinue execution until it reaches the hard limit (or modifies its resource
limit).
getrlimit(2)
, очевидно, где встроенная в оболочку команда ulimit
получает свою информацию.
- Почему
launchctl limit maxfiles
отличаются от kern.maxfiles
и kern.maxfilesperproc
?
launchctl limit maxfiles
сообщает о мягких и жестких ограничениях для каждого процесса, которые launchd накладывает на процессы. launchd, по-видимому, накладывает мягкое ограничение в 256 и "неограниченное" жесткое ограничение, что на самом деле означает, что оно ограничено только kern.maxfilesperproc
в ядре, а не launchd
.
kern.maxfiles
- ограничение общего количества файловых дескрипторов во всей системе; общая сумма всех открытых файлов для всех процессов плюс все файлы, которые ядро открыло для своих собственных целей.
- Какой лимит (
maxfiles 256
или kern.maxfilesperproc: 10240
) применяется для приложения, которое пользователь запускает вручную из Приложения?
Приложение, запускаемое вручную пользователем, запускающим приложение из графического интерфейса, будет наследовать установленный при запуске мягкий предел в 256 и "неограниченный" жесткий предел, поэтому его жесткий предел будет по сути kern.maxfilesperproc
, при условии, что в системе достаточно свободных дескрипторов файлов что приложение может достичь своего предела до того, как вся система достигнет kern.maxfiles
.
Процессы (приложения) также могут использовать системные вызовы для настройки своих мягких ограничений, когда они запущены. Таким образом, мягкое ограничение 256 является просто значением по умолчанию во время запуска, и ваше приложение / процесс может немедленно увеличить свой собственный мягкий предел.