Estoy tratando de aumentar la cantidad máxima de archivos abiertos para el usuario actual
> ulimit -n
1024
Intento aumentar y fallar de la siguiente manera
> ulimit -n 4096
bash: ulimit: open files: cannot modify limit: Operation not permitted
Entonces hago lo natural e intento correr con permiso temporal, pero fallo
> sudo ulimit -n 4096
sudo: ulimit: command not found
Preguntas
- ¿Cómo aumentar ulimit?
- ¿Por qué está pasando esto?
Usando Fedora 14

ulimit 4096no funciona. Creo que-nes correcto Como prueba de concepto, funciona si primerosudo su - root(pero solo cambia para root).Respuestas:
ulimites un shell incorporado, no un comando externo. Debe integrarse porque actúa sobre el proceso de shell en sí, comocd: 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 porsudosolo, 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íneasdonde
paisleeestá 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, ejecuteelevar el límite suave al límite duro.
fuente
sudo bash -cson lassudo -ique inician un shell de inicio de sesión ysudo -swhcih inicia un shell. Se aplican las mismas limitaciones, pero esto podría ser útil en otras circunstancias.sudo sh -c "ulimit -c 1024 && exec su $LOGNAME". Pero ambosulimit -c 1024yexec su $LOGNAME"solo afectan el shell creado porsudo, entonces, ¿cuál es el propósito del comando?exec su $LOGNAME"tampoco hace nada significativo para hacer uso del límite modificado. Estoy muy confundido y me pregunto si me falta algo.ulimit -Sn unlimitedno funciona en la mayoría de los depósitos. El método correcto es llamarulimit -ay luego llamarulimit -n <number>donde <número es el límite rígido (la columna derecha).abra el archivo
/etc/security/limits.confy agregue la línea<user> soft nofile <value>. para usarulimitchange to root user e intente lo mismo.fuente