ulimit
es un shell incorporado, no un comando externo. Debe integrarse porque actúa sobre el proceso de shell en sí, como cd
: los límites, como el directorio actual, son propiedad de ese proceso en particular.
sudo bash -c 'ulimit -n 4096'
funcionaría, pero cambiaría el límite para el proceso bash invocado por sudo
solo, lo que no lo ayudaría.
Hay dos valores para cada límite: el límite rígido y el límite flexible. Solo la raíz puede elevar el límite duro; cualquiera puede bajar el límite duro, y el límite suave se puede modificar en cualquier dirección con la única restricción de que no puede ser mayor que el límite duro. El límite blando es el valor real que importa.
Por lo tanto, debe organizar que todos sus procesos tengan un límite estricto para los archivos abiertos de al menos 4096. Puede mantener el límite flexible en 1024. Antes de iniciar ese proceso que requiere muchos archivos, aumente el límite flexible. En /etc/security/limits.conf
, agregue las líneas
paislee hard nofile 4096
paislee soft nofile 1024
donde paislee
está el nombre del usuario con el que desea ejecutar su proceso. En el shell que inicia el proceso para el que desea un límite superior, ejecute
ulimit -Sn unlimited
elevar el límite suave al límite duro.
ulimit 4096
no funciona. Creo que-n
es correcto Como prueba de concepto, funciona si primerosudo su - root
(pero solo cambia para root).