El límite predeterminado de archivos abiertos por proceso es 1024 en, digamos, Linux. Para ciertos demonios esto no es suficiente. Por lo tanto, la pregunta: ¿Cómo cambiar el límite de archivo abierto para un usuario específico?
El límite predeterminado de archivos abiertos por proceso es 1024 en, digamos, Linux. Para ciertos demonios esto no es suficiente. Por lo tanto, la pregunta: ¿Cómo cambiar el límite de archivo abierto para un usuario específico?
Respuestas:
En Linux puede configurarlo a través de limits.conf
, por ejemplo, a través de
# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf
(que establece el límite rígido y flexible para procesos iniciados bajo la transmisión debian del usuario en 8192)
Puede verificar el cambio a través de:
# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files (-n) 8192
[..]
Si un demonio ya se está ejecutando, debe reiniciarse de modo que se levante el nuevo límite. En caso de que el demonio se inicie manualmente desde una sesión de usuario, el usuario debe volver a iniciar sesión para obtener el nuevo límite.
Alternativamente, también puede especificar límites adicionales directamente /etc/security/limits.conf
, por supuesto, pero prefiero el .d
enfoque de directorio para una mejor mantenibilidad.
Para imponer límites blandos / duros diferentes, use dos entradas, p. Ej.
debian-transmission soft nofile 4096
debian-transmission hard nofile 8192
(justificación de esto: el valor suave se establece después de que el usuario inicia sesión, pero un proceso de usuarios puede aumentar el límite hasta el límite duro)
La configuración limits.conf
/ limits.d
es utilizada por pam_limits.so
, que está habilitada por defecto en las distribuciones actuales de Linux.
También hay un límite para todo el sistema en Linux /proc/sys/fs/file-max
:
Este archivo define un límite de todo el sistema en la cantidad de archivos abiertos para todos los procesos.
Por ejemplo, el valor predeterminado en Ubuntu 10.04:
$ cat /proc/sys/fs/file-max
786046
El pseudo archivo /proc/sys/fs/file-nr
proporciona más información, p. Ej.
$ cat /proc/sys/fs/file-nr
1408 0 786046
el número de identificadores de archivo asignados (es decir, el número de archivos actualmente abiertos); la cantidad de identificadores de archivos libres; y el número máximo de identificadores de archivo
Por lo tanto, por un lado, es posible que también deba ajustar el file-max
límite de todo el sistema , en caso de que sea muy pequeño y / o el sistema ya esté muy cargado. Por otro lado, solo aumentar file-max
no es suficiente, porque no influye en los límites blandos / duros impuestos por el mecanismo pam_limits.
Para cambiar file-max
en la línea de comando (no es necesario reiniciar):
# sysctl -w fs.file-max=786046
Para cambios permanentes, agregue fs.file-max=786046
a /etc/sysctl.conf
o /etc/sysctl.d
.
El límite superior de fs.file-max
se registra en fs.nr_open
. Por ejemplo, (nuevamente) en Ubuntu 10.04:
$ sysctl -n fs.nr_open
1048576
(que es 1024 * 1024)
Este sysctl también es configurable.