Es importante saber que hay dos tipos de límites:
- Un límite rígido es configurable solo por root. Este es el valor (límite) más alto posible para el límite flexible.
- Un usuario normal puede establecer un límite flexible . Este es el límite real vigente.
Solución para una sola sesión
En el shell establece el límite suave:
ulimit -Sn 2048
Este ejemplo elevará el límite real a 2048, pero el comando tendrá éxito solo si el límite rígido (check:) ulimit -Hn
es el mismo o mayor. Si necesita valores más altos, aumente el límite rígido utilizando uno de los métodos a continuación. Los límites se establecen por proceso y los procesos recién generados los heredan, por lo que todo lo que ejecute después de este comando en el mismo shell tendrá los nuevos límites.
Cambiar el límite duro en una sola sesión
Esto no es fácil porque solo la raíz puede cambiar un límite estricto y después de cambiar a la raíz, debe volver al usuario original. Aquí está la solución con sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
Solución para todo el sistema
En Debian y en muchos otros sistemas que usan pam_limits
, puede establecer los límites de todo el sistema en /etc/security/limits.conf
y en archivos /etc/security/limits.d
. El archivo conf contiene descripción. Líneas de ejemplo:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
Esto establecerá el límite rígido y el límite flexible predeterminado para los usuarios del grupo webadmins
después de iniciar sesión.
Otros limites
El valor límite estricto está limitado por el límite global del valor de los descriptores de archivos abiertos, /proc/sys/fs/file-max
que es bastante alto por defecto en las distribuciones modernas de Linux. Este valor está limitado por el NR_OPEN
valor utilizado durante la compilación del núcleo.
¿No hay una mejor solución?
Tal vez podría verificar si todos los *log
archivos que alimenta tail -f
son archivos realmente activos que necesitan ser monitoreados. Es posible que algunos de ellos ya estén cerrados para iniciar sesión y simplemente puede abrir una cantidad menor de archivos.