En Linux, puede cambiar la cantidad máxima de archivos abiertos. Usted puede modificar este número utilizando el comando ulimit. Le otorga la capacidad de controlar los recursos disponibles para el shell o el proceso iniciado por él.
Lea también: Set Linux Running Processes Limits on Per-Userl Level
En este breve tutorial le mostraremos cómo comprobar su límite actual de archivos abiertos y descripciones de archivos, pero para ello, necesitará tener acceso root a su sistema.
Primero, vamos a ver cómo podemos averiguar el número máximo de descriptores de archivos abiertos en su sistema Linux.
Encontrar el límite de archivos abiertos de Linux
El valor se almacena en:
# cat /proc/sys/fs/file-max818354
El número que verá, muestra el número de archivos que un usuario puede haber abierto por sesión de inicio de sesión. El resultado puede ser diferente dependiendo de su sistema.
Por ejemplo en un servidor CentOS mío, el límite se estableció en 818354, mientras que en el servidor Ubuntu que corro en casa el límite por defecto se estableció en 176772.
Si quieres ver los límites duros y blandos, puedes usar los siguientes comandos:
Comprobar el límite duro en Linux
# ulimit -Hn4096
Comprobar los límites blandos en Linux
# ulimit -Sn1024
Para ver los valores duros y blandos para diferentes usuarios, puedes simplemente cambiar de usuario con «su» al usuario cuyos límites quieres comprobar.
Por ejemplo:
# su marin$ ulimit -Sn1024
$ ulimit -Hn4096
Cómo comprobar los límites de los descriptores de archivos de todo el sistema en Linux
Si está ejecutando un servidor, algunas de sus aplicaciones pueden requerir límites más altos para los descriptores de archivos abiertos. Un buen ejemplo de ello son los servicios MySQL/MariaDB o el servidor web Apache.
Puede aumentar el límite de archivos abiertos en Linux editando la directiva del kernel fs.file-max
. Para ello, puede utilizar la utilidad sysctl.
Sysctl se utiliza para configurar los parámetros del kernel en tiempo de ejecución.
Por ejemplo, para aumentar el límite de archivos abiertos a 500000, puede utilizar el siguiente comando como root:
# sysctl -w fs.file-max=500000
Puede comprobar el valor actual de los archivos abiertos con el siguiente comando:
$ cat /proc/sys/fs/file-max
Con el comando anterior los cambios que haya realizado sólo permanecerán activos hasta el siguiente reinicio. Si desea aplicarlos permanentemente, tendrá que editar el siguiente archivo:
# vi /etc/sysctl.conf
Añada la siguiente línea:
fs.file-max=500000
Por supuesto, puede cambiar el número según sus necesidades. Para verificar los cambios de nuevo utilice:
# cat /proc/sys/fs/file-max
Los usuarios tendrán que cerrar la sesión y volver a iniciarla para que los cambios surtan efecto. Si desea aplicar el límite inmediatamente, puede utilizar el siguiente comando:
# sysctl -p
Set User Level Open File limits in Linux
Los ejemplos anteriores, mostraron cómo establecer límites globales, pero es posible que desee aplicar límites por usuario. Para ello, como usuario root, necesitarás editar el siguiente archivo:
# vi /etc/security/limits.conf
Si eres administrador de Linux, te sugiero que te familiarices mucho con ese archivo y lo que puedes hacer en él. Lee todos los comentarios que hay en él ya que proporciona una gran flexibilidad en cuanto a la gestión de los recursos del sistema limitando los usuarios/grupos en diferentes niveles.
Las líneas que debes añadir toman los siguientes parámetros:
<domain> <type> <item> <value>
Aquí tienes un ejemplo de configuración de límites blandos y duros para el usuario marin:
## Example hard limit for max opened filesmarin hard nofile 4096## Example soft limit for max opened filesmarin soft nofile 1024
Pensamientos finales
Este breve artículo te ha mostrado un ejemplo básico de cómo puedes comprobar y configurar los límites globales y a nivel de usuario para el número máximo de archivos abiertos.
Aunque sólo hemos arañado la superficie, te animo a que eches un vistazo más detallado y leas sobre /etc/sysctl.conf y /etc/security/limits.conf y aprendas a utilizarlos. Ellos serán de gran ayuda para usted un día.