Quelle est la relation entre `launchctl limit` et` ulimit`?

11

Il n'y a pas de configuration ulimit dans les fichiers de démarrage du système / scripts de démarrage du shell.

ulimit -a spectacles:

-u: processes                       1064
-n: file descriptors                256

launchctl limit spectacles:

maxproc     2048           2048           
maxfiles    2048           2048

Je me souviens vaguement que les limites de launchctl devraient correspondre à la sortie ulimit d'un shell, je peux me tromper.

Existe-t-il une relation entre les limites du lauchctl et ulimit?

Howard
la source
Vous n'obtenez pas de réponses satisfaisantes de la page de manuel des commandes?
Andrew U.
@AndrewU. La page de manuel launchctl ne mentionne pas limit, la page de manuel ulimit ne mentionne pas launchctl ou launchd.
Howard

Réponses:

10

Dans le shell, ulimit permet de "contrôler les ressources disponibles pour le shell et les processus qu'il démarre" (voir man bash). Par conséquent, il s'applique uniquement au shell et à ses enfants. Les limites de launchd sont liées à celui-ci et aux processus qu'il gère. Les deux sont séparés.

Les programmes individuels peuvent définir leurs propres limites de ressources en appelant les routines de la bibliothèque C standard ulimit()ou getrlimit()et setrlimit(). Certaines limites de ressources ne peuvent être élevées que si le processus s'exécute en tant que super-utilisateur.

À titre d'exemple pratique, je débogue de gros projets logiciels et la limite par défaut du shell pour le nombre de fichiers ouverts n'est pas assez grande. Dans mon fichier .bashrc, j'ai les éléments suivants:

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

Maintenant, mon débogueur ne se plaindra pas qu'il ne peut pas ouvrir tous les fichiers dont il a besoin. Évidemment, cela ne devrait avoir aucun impact sur launchd.

ithos67
la source
1
Pour développer cela: les paramètres ulimit par défaut sont dérivés de launchctl limit; Bien que l'utilisateur puisse modifier les nombres ultimes, ils ne peuvent toutefois pas dépasser launchctl limitles limites strictes.
Howard
cela sera réinitialisé au redémarrage
engineerDave