Usando il comando ulimit si cambiano solo i limiti delle risorse per la shell corrente e i suoi figli e sudo ulimit crea una shell di root, regola i suoi limiti e poi esce (quindi non ha, per quanto posso vedere, nessun effetto reale).
Per superare 12288, è necessario regolare i parametri kern.maxfiles e kern.maxfilesperproc del kernel, e anche (almeno secondo questo post del blog , che è un riassunto di questa discussione ) un limite di launchd. Puoi usare launchctl limit per regolarli tutti insieme:
sudo launchctl limit maxfiles 1000000 1000000
Per rendere questo permanente (cioè non resettare al riavvio), crea /etc/launchd.conf contenente:
limit maxfiles 1000000 1000000
Allora puoi usare ulimit (ma senza lo sudo) per regolare il tuo limite di processo.
Se questo non funziona, potreste avere dei limiti di dimensione nel kernel. Se il tuo modello lo supporta , avviare il kernel in modalità 64-bit può aiutare.