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 4096
no funciona. Creo que-n
es correcto Como prueba de concepto, funciona si primerosudo su - root
(pero solo cambia para root).Respuestas:
ulimit
es 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 porsudo
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íneasdonde
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, ejecuteelevar el límite suave al límite duro.
fuente
sudo bash -c
son lassudo -i
que inician un shell de inicio de sesión ysudo -s
whcih 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 1024
yexec 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 unlimited
no funciona en la mayoría de los depósitos. El método correcto es llamarulimit -a
y luego llamarulimit -n <number>
donde <número es el límite rígido (la columna derecha).abra el archivo
/etc/security/limits.conf
y agregue la línea<user> soft nofile <value>
. para usarulimit
change to root user e intente lo mismo.fuente