Unter 14.04+ kann das Limit für geöffnete Dateien nicht über 999999 erhöht werden.

Unter 14.04+ kann das Limit für geöffnete Dateien nicht über 999999 erhöht werden.

Ich versuche, das Limit für geöffnete Dateien sowohl für Root-Benutzer als auch für Nicht-Root-Benutzer über zu erhöhen /etc/security/limits.conf. Aber ich komme nicht darüber hinweg 999999, alles über diesem Wert wird auf den Standardwert zurückgesetzt 1024, und ich kann es auch nicht auf unbegrenzt setzen.

Hier ist meinlimits.conf

* hard nofile 999999
* hard nofile 999999
root hard nofile 999999
root soft nofile 999999

Das Obige funktioniert einwandfrei und ulimit -ngibt zurück 999999.

Aber wenn ich den Wert einen Schritt höher oder auf unlimitedoder -1oder mache infinity, funktioniert es nicht. ulimit -nreturn1024

Ich habe hierauf verwiesen:limits.conf – Konfigurationsdatei für das Modul pam_limits | Ubuntu-Manpage

Danke

Antwort1

Ich weiß, dass es 10 Monate zu spät ist, aber Sie haben das harte Limit zweimal für alle Benutzer festgelegt. Ändern Sie die zweite Zeile in ein weiches ulimit.

* hard nofile 999999
* soft nofile 999999
root hard nofile 999999
root soft nofile 999999

Danach sollten Sie Folgendes sehen:

$ ulimit -n
999999
$ 

Ihre Datei hätte für Root immer funktionieren sollen, da die Grenzwerte korrekt definiert waren.

Außerdem können Sie nicht -1, unendlich, unbegrenzt oder ähnliches verwenden, Sie müssen einen Literalwert verwenden. Der maximal unterstützte Wert hierfür ist im Kernel definiert und wird in /proc/sys/fs/nr_open angezeigt. In meinen CentOS 7- und Debian-Strech-Umgebungen erhalte ich denselben Wert:

$ cat /proc/sys/fs/nr_open
1048576
$

Sie müssen außerdem eine neue Sitzung starten, damit die Limits aktualisiert werden.

Antwort2

Damit dies funktioniert, müssen drei Dateien geändert werden:

  • /etc/security/limits.conf
  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

In der ersten Datei haben Sie die benötigten Zeilen bereits eingefügt, in den beiden anderen Dateien wird dann noch diese Zeile benötigt:

session required pam_limits.so

Bitte beachten Sie:

Was die meisten Ressourcen nicht betonen, ist, dass Ihre Grenzwerte ganz einfach von allem geändert werden können, was für die Ausführung Ihrer Prozesse verantwortlich ist. Wenn ulimit -n (als korrekter Benutzer ausführen) Ihnen die gerade festgelegte Zahl liefert, cat /proc/{process_id}/limits aber immer noch die niedrige Zahl ausgibt, haben Sie mit ziemlicher Sicherheit einen Prozessmanager, ein Init-Skript oder etwas Ähnliches, das Ihre Grenzwerte durcheinander bringt. Sie müssen auch bedenken, dass Prozesse die Grenzwerte des übergeordneten Prozesses erben.

Wenn ein solcher Prozess vorhanden ist, müssen Sie daher die Konfigurationsdatei ändern, damit er funktioniert.

Quelle: https://underyx.me/2015/05/18/erhöht-die-maximale-anzahl-von-dateideskriptoren

verwandte Informationen