2009-07-31 8 views
15

Ist es möglich, die maximale Anzahl der geöffneten Dateien auf einen "unendlichen" Wert zu setzen oder muss es eine Zahl sein?Unter Linux - legen Sie maximale offene Dateien auf unbegrenzt. Möglich?

Ich hatte eine Anforderung, das Deskriptor-Limit für einen Daemon-Benutzer als "unbegrenzt" zu setzen, und ich versuche festzustellen, ob das möglich ist oder wie es geht. Ich habe gesehen, dass einige Mailinglisten auf einen "max" -Wert verweisen, der verwendet werden kann (wie in: "myuser hard nofile max", aber bis jetzt unterstützen die Manpages und Referenzen, die ich konsultiert habe, das nicht.

Wenn ich 'max' oder ähnliches nicht verwenden kann, würde ich gerne wissen, wie die maximale Anzahl von Dateien (theoretisch) zu bestimmen ist, also habe ich eine Basis für welche Nummer ich auch wähle verwenden 100000000 oder etwas, wenn es ein vernünftiger Weg, eine Obergrenze zu erhalten

ich bin mit RHEL 5, wenn es wichtig ist,

Update:.. ich bin ein Idiot, wenn es um schriftlich Fragen kommt. Idealerweise würde ich das gerne am Limit machen s.conf Datei (wo kommt "max" her). Ändert das irgendwelche Antworten?


Danke für die Kommentare. Dies ist für eine JBOSS-Instanz und nicht für einen Daemon, den ich schreibe, also weiß ich nicht, ob setrlimit() für mich nützlich ist. Allerdings Jefromi - Ich mag die Definition von Infinity :) Ich sah einen Beitrag, der einen Dateideskriptor vorschlägt, ist "zwei Shorts und ein Zeiger", so sollte ich in der Lage sein, die ungefähre obere Grenze zu berechnen.

Antwort

32

Mit POSIX können Sie das RLIMIT_NOFILE Ressourcenlimit unter Verwendung von setrlimit() auf RLIM_INFINITY setzen. Dies bedeutet, dass das System dieses Ressourcenlimit nicht erzwingt. Natürlich sind Sie immer noch durch die Implementierung (z. B. MAXINT) und andere Ressourcenbeschränkungen (z. B. verfügbarer Speicher) eingeschränkt.

Update: RHEL 5 hat einen maximalen Wert von 1048576 (2) für diese Grenze (NR_OPEN in /usr/include/linux/fs.h), und wird jeden größeren Wert einschließlich infinity nicht akzeptieren, auch für die Wurzel. Auf RHEL 5 können Sie diesen Wert in /etc/security/limits.conf verwenden und das ist so nah wie möglich, um ins Unendliche zu kommen.

Vor nicht langer Zeit wurde a Linux kernel patch angewendet, um diese Grenze auf unendlich zu setzen, jedoch it has since been reverted as a result of unintended consequences.

+6

Hat sich etwas vor kurzem ab 2015 geändert? – CMCDragonkai

+1

Potenziell nützlich: Ubuntu 14.04 hat auch diese 2^20 Grenzen in '/ etc/security/limits.conf'. Alles, was darüber hinausgeht, setzt das Limit auf den Standardwert 2^10 zurück – Bacon

0

Versuchen Sie, die Linie

<domain> - 

<domain> mit dem Benutzernamen, im einfachsten Fall zu ersetzen.

Die limits.conf man page sagt

- 
    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. . 
Verwandte Themen