Qual é a relação entre `launchctl limit` e` ulimit`?

11

Não há nenhuma configuração ulimit nos arquivos de inicialização do sistema / scripts de inicialização do shell.

ulimit -a mostra:

-u: processes                       1064
-n: file descriptors                256

launchctl limit mostra:

maxproc     2048           2048           
maxfiles    2048           2048

Lembro-me vagamente de que os limites do launchctl devem corresponder à saída ulimit de um shell, posso estar errado.

Existe alguma relação entre os limites do lauchctl e o ulimit?

Howard
fonte
Você não obtém respostas satisfatórias na página de manual dos comandos?
Andrew U.
@AndrewU. A página de manual do launchctl não menciona limite, a página de manual ulimit não menciona o launchctl ou o launchd.
Howard

Respostas:

10

No shell, o ulimit fornece "controle sobre os recursos disponíveis para o shell e sobre os processos iniciados por ele" (consulte man bash). Portanto, ele se aplica apenas ao shell e seus filhos. Os limites para o lançamento estão relacionados a ele e aos processos que ele gerencia. Os dois são separados.

Programas individuais podem definir seus próprios limites de recursos chamando as rotinas da Biblioteca C Padrão ulimit()ou getrlimit()e setrlimit(). Certos limites de recursos não podem ser elevados, a menos que o processo esteja sendo executado como superusuário.

Como exemplo prático, depuro grandes projetos de software e o limite padrão do shell para o número de arquivos abertos não é grande o suficiente. No meu arquivo .bashrc, tenho o seguinte:

# Increase the upper limit on the number of open files:
ulimit -n 1024

Agora, meu depurador não se queixará de que não pode abrir todos os arquivos necessários. Obviamente, isso não deve ter impacto no launchd.

ithos67
fonte
1
Para elaborar sobre isso: as configurações ulimit padrão são derivadas launchctl limit; embora o usuário possa alterar os números ulimit, eles não podem exceder launchctl limitos limites rígidos.
Howard
este será reposto na reinicialização
engineerDave