2009-07-31 2 views
15

È possibile impostare il numero massimo di file aperti su un valore "infinito" o deve essere un numero?Su Linux: imposta i file aperti massimi su illimitato. Possibile?

Avevo il requisito di impostare il limite di descrittore per un utente daemon come "illimitato" e sto cercando di determinare se è possibile o come farlo. Ho visto alcune mailing list fare riferimento a un valore "max" che può essere utilizzato (come in: "myuser hard nofile max", ma finora le pagine man ei riferimenti che ho consultato non lo supportano.

Se non riesco a utilizzare "max" o simili, mi piacerebbe sapere come determinare quale sia il numero massimo di file (teoricamente), quindi ho una base per qualsiasi numero che seleziono. utilizzare 100000000 o qualcosa se c'è un modo più ragionevole per ottenere un limite superiore

sto usando RHEL 5 se è importante

Aggiornamento:.. sono un idiota quando si tratta di questioni di scrittura. Idealmente mi piacerebbe farlo nel limite file s.conf (da cui proviene "max"). Questo cambia qualche risposta?


Grazie per i commenti. Questo è per un'istanza di JBOSS e non un demone che sto scrivendo, quindi non so se setrlimit() è utile per me. Tuttavia, Jefromi - Mi piace la definizione di Infinity :) Ho visto un post che suggerisce che un descrittore di file è "due cortometraggi e un puntatore", quindi dovrei essere in grado di calcolare il limite superiore approssimativo.

risposta

32

POSIX consente di impostare il limite di risorse RLIMIT_NOFILE su RLIM_INFINITY utilizzando setrlimit(). Ciò significa che il sistema non imporrà questo limite di risorse. Naturalmente, sarai ancora limitato dall'implementazione (ad esempio MAXINT) e da qualsiasi altra limitazione di risorse (ad esempio memoria disponibile).

Aggiornamento: RHEL 5 ha un valore massimo di 1048576 (2) per questo limite (NR_OPEN in /usr/include/linux/fs.h), e non accetterà alcun valore maggiore compreso infinito, anche per root. Quindi su RHEL 5 puoi usare questo valore in /etc/security/limits.conf e questo è il più vicino possibile a raggiungere l'infinito.

Non molto tempo fa a Linux kernel patch è stato applicato per consentire di impostare questo limite su infinito, tuttavia it has since been reverted as a result of unintended consequences.

+6

è cambiato qualcosa di recente a partire dal 2015? – CMCDragonkai

+1

Potenzialmente utile: Ubuntu 14.04 ha anche questi limiti 2^20 in '/ etc/security/limits.conf'. Qualunque cosa sia passata, resetterà il limite al valore predefinito 2^10 – Bacon

0

Prova la linea

<domain> - 

sostituzione <domain> con il nome utente, nel caso più semplice.

Il 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. .