2009-07-31 20 views
15

¿Es posible establecer la cantidad máxima de archivos abiertos en algún valor "infinito" o debe ser un número?En Linux: configure los archivos máximos abiertos en ilimitados. ¿Posible?

Tenía un requisito para establecer el límite de descriptor para un usuario de daemon a ser "ilimitado" y estoy tratando de determinar si eso es posible o cómo hacerlo. He visto algunas listas de correo referirse a un valor "máximo" que se puede utilizar (como en: "myuser hard nofile max", pero hasta ahora las páginas man y las referencias que he consultado no respaldan eso.

Si no puedo usar 'max' o similar, me gustaría saber cómo determinar cuál es el número máximo de archivos (teóricamente), así que tengo alguna base para el número que elija. No quiero utilizar 100000000 o algo, si hay una manera más razonable para obtener una cota superior

estoy usando RHEL 5 si es importante

actualización:.. que soy un idiota cuando se trata de cuestiones de redacción. Idealmente, me gustaría hacer esto en el límite archivo s.conf (que es de donde vendría "max"). ¿Eso cambia alguna respuesta?


Gracias por los comentarios. Esto es para una instancia de JBOSS y no un daemon que estoy escribiendo, así que no sé si setrlimit() me es útil. Sin embargo, Jefromi - Me gusta la definición de Infinity :) Vi una publicación que sugiere que un descriptor de archivo es "dos cortos y un puntero", así que debería ser capaz de calcular el límite superior aproximado.

Respuesta

32

POSIX le permite establecer el límite de recursos RLIMIT_NOFILE en RLIM_INFINITY usando setrlimit(). Lo que esto significa es que el sistema no aplicará este límite de recursos. Por supuesto, seguirá estando limitado por la implementación (por ejemplo, MAXINT) y cualquier otra limitación de recursos (por ejemplo, memoria disponible).

Actualización: RHEL 5 tiene un valor máximo de 1048576 (2) para este límite (NR_OPEN en /usr/include/linux/fs.h), y no aceptará cualquier valor más grande que incluye el infinito, incluso para la raíz. Entonces en RHEL 5 puedes usar este valor en /etc/security/limits.conf y eso es lo más cerca que vas a llegar al infinito.

No hace mucho se aplicó a Linux kernel patch para permitir que este límite se establezca en infinito, sin embargo, it has since been reverted as a result of unintended consequences.

+6

¿Ha cambiado algo recientemente a partir de 2015? – CMCDragonkai

+1

Potencialmente útil: Ubuntu 14.04 también tiene estos límites de 2^20 en '/ etc/security/limits.conf'. Cualquier cosa pasada eso restablecerá el límite al valor predeterminado 2^10 – Bacon

0

a la Línea de

<domain> - 

reemplazando <domain> con el nombre de usuario, en el caso más simple.

El limits.conf man page dice

- 
    for enforcing both soft and hard resource limits together. 

    Note, if you specify a type of '-' but neglect to supply the 
    item and value fields then the module will never enforce any 
    limits on the specified user/group etc. . 
Cuestiones relacionadas