Je viens de mettre à jour Mac OS X vers Yosemite, et maintenant certaines applications ne fonctionnent pas (IBM DB2). Je sais que je dois définir les fichiers ouverts sur 65000, mais la commande ne fonctionne pas.
Andress-MBP:~ root# ulimit -n 12288
Andress-MBP:~ root# ulimit -n 12289
-sh: ulimit: open files: cannot modify limit: Invalid argument
Pourquoi cela se produit-il et comment puis-je résoudre le problème?
Il semble qu'il existe une méthode totalement différente pour modifier la limite de fichiers ouverts pour chaque version d'OS X!
Pour OS X Sierra (10.12.X), vous devez:
Dans /Library/LaunchDaemons
, créez un fichier nommé limit.maxfiles.plist
et collez le texte suivant dans (n'hésitez pas à modifier les deux nombres, qui correspondent respectivement aux limites logicielle et matérielle):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Changez le propriétaire de votre nouveau fichier:
Sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
Chargez ces nouveaux paramètres:
Sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
Enfin, vérifiez que les limites sont correctes:
launchctl limit maxfiles
Je vois que vous avez posé cette question partout.
Vous devez gérer une limite de noyau, kern.maxfiles, qui est la limite de noyau et qui ne peut pas être dépassée lors de la définition de ulimit.
Consultez la page de blog cryptée Nombre maximal de fichiers sous Mac OS X pour obtenir une description de la manipulation de kern.maxifiles à l'aide de sysctl.
Je n'ai pas encore chargé Yosemite sur mon Mac. Le sysctl -w kern.maxfiles=65000
fonctionne sur Mavericks, qui a la même limite kern.maxfiles = 12288 par défaut.
J'ai vérifié sur mon VM OS X 10.6.8 et il avait la même limite, ce qui pose la question de savoir comment cela fonctionnait auparavant avant votre version d'OS X.
Il existe un partage de diapositives ( DB2 pour Mac OS X Installation et configuration de DB2 pour Mac OS X ) indiquant les limites recommandées pour l’utilisation de DB2. Voir Augmenter les paramètres système page 7.
Augmenter les paramètres du système
Ouvrez /etc/sysctl.conf (ou créez-le s'il n'existe pas déjà) et insérez les paramètres suivants. Ces paramètres augmentent certains paramètres de mémoire partagée et de limites utilisateur nécessaires à DB2 pour fonctionner sur Mac.
Ajoutez ce qui suit à /etc/sysctl.conf
kern.sysv.shmmax = 1073741824
kern.sysv.shmmin = 1
kern.sysv.shmmni = 4096
kern.sysv.shmseg = 32
kern.sysv.shmall = 1179648
kern.maxfilesperproc = 65536
kern.maxfiles = 65536
On dirait que vous avez perdu votre fichier /etc/sysctl.conf
lors de la mise à niveau.
Sous Mac OS 10.10, il semble que le paramètre ulimit ne puisse pas dépasser la limite de la commande launchctl.
Donc, vous devriez d’abord lancer launchctl limit maxfiles dans le terminal pour obtenir le réglage actuel:
launchctl limit maxfiles
maxfiles 256 unlimited
Donc, dans mon cas, la limite souple est de 256, la limite stricte est illimitée. Et puis, si je veux définir la limite souple à 512:
Sudo launchctl limit maxfiles 512 unlimited
L’utilisation détaillée de launchctl pour la définition des limites est disponible ici: https://developer.Apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/launchctl.1.html