Esto está sucediendo en Ubuntu Release 12.04 (preciso) 64-bit Kernel Linux 3.2.0-25-virtual
Estoy tratando de aumentar la cantidad de archivos abiertos permitidos para un usuario. Esto es para mi aplicación eclipse java donde el límite actual de 1024 no es suficiente.
De acuerdo con las publicaciones que he encontrado hasta ahora, debería poder poner líneas en
/etc/security/limits.conf así:
soft nofile 4096
hard nofile 4096
para aumentar la cantidad de archivos abiertos permitidos para todos los usuarios.
Pero eso no funciona para mí y creo que el problema no está relacionado con ese archivo.
Para todos los usuarios, el límite predeterminado es 1024, independientemente de lo que se encuentre en /etc/security/limits.conf (reinicié después de cambiar ese archivo)
$ ulimit -n
1024
Ahora, a pesar de las entradas en /etc/security/limits.conf, no puedo aumentar eso:
$ ulimit -n 2048
-bash: ulimit: abrir archivos: no se puede modificar el límite: Operación no permitida La parte extraña es que puedo cambiar el límite hacia abajo , pero no puedo cambiarlo hacia arriba, incluso para volver a un número que está por debajo del límite original:
$ ulimit -n 800
$ ulimit -n
800
$ ulimit -n 900
-bash: ulimit: open files: cannot modify limit: Operation not permitted
Como root, puedo cambiar ese límite a lo que quiera, arriba o abajo. Ni siquiera parece importarle el límite supuestamente de todo el sistema en / proc / sys / fs / file-max
# cat /proc/sys/fs/file-max
188897
# ulimit -n 188898
# ulimit -n
188898
Pero incluso si me sale el eclipse para ejecutarlo como root, ¡mi aplicación todavía falla debido a la excepción "Too Many Open File"!
Hasta ahora, no he encontrado ninguna manera de aumentar el límite de archivos abiertos para un usuario no root.
¿Cómo debo hacer esto correctamente? He visto otras publicaciones pero ¡no tuve suerte!
/etc/security/limits.conf
, es posible que deba cerrar sesión y volver a iniciarla antes de poder usar el nuevo límite máximo. Hice esto, y estaba desconcertado alulimit -Hs
seguir mostrando 1000 cuando lo había elevado a 1000000. Luego me desconecté y volví a ingresar, y ulimit mostró la nueva cantidad.Respuestas:
El
ulimit
comando por defecto cambia los límites DUROS, que usted (un usuario) puede reducir, pero no puede aumentar.Use la opción -S para cambiar el límite SOFT , que puede variar de 0- { HARD }.
De hecho, he alias
ulimit
aulimit -S
, por lo que por defecto a los límites suaves todo el tiempo.En cuanto a su problema, le falta una columna en sus entradas en
/etc/security/limits.conf
.Debería haber CUATRO columnas, pero falta la primera en su ejemplo.
La primera columna describe a QUIÉN debe solicitar el límite. '*' es un comodín, es decir, todos los usuarios. Para elevar los límites de root , debe ingresar explícitamente 'root' en lugar de '*'.
También debe editar
/etc/pam.d/common-session*
y agregar la siguiente línea al final:fuente
/etc/pam.d/common-session*
y solo lo editécommon-session
, e incluso después de un reinicio no funcionó. Pero después de agregar la misma línea (parapam_limits.so
)common-session-noninteractive
, seulimit -n
muestra el nuevo valor después de un nuevo inicio de sesión (no se requiere reiniciar). FWIW Estaba tratando de cambiar el límite para root (solo).Si usa límites suaves y duros por usuario, puede usar algo como:
para comprobar si su configuración funciona para ese usuario específico o no.
fuente
Tengo muchos problemas para que esto funcione.
El uso de lo siguiente le permite actualizarlo independientemente de su permiso de usuario.
fuente
$ sudo sysctl -w fs.inotify.max_user_watches=100000 fs.inotify.max_user_watches = 100000 $ ulimit -n 1024