Wie konfiguriere ich das Prozesslimit für offene Dateien eines Benutzers?


8

Das Standardlimit für offene Dateien pro Prozess beträgt beispielsweise unter Linux 1024. Für bestimmte Dämonen reicht dies nicht aus. Daher die Frage: Wie kann man das Limit für geöffnete Dateien für einen bestimmten Benutzer ändern?

Antworten:


16

Unter Linux können Sie es über konfigurieren limits.conf, z. B. über

# cd /etc/security
# echo debian-transmission - nofile 8192 > limits.d/transmission.conf

(Damit wird sowohl das Hard- als auch das Soft-Limit für Prozesse, die unter der Debian-Übertragung des Benutzers gestartet wurden, auf 8192 festgelegt.)

Sie können die Änderung überprüfen über:

# sudo -u debian-transmission bash -c "ulimit -a"
[..]
open files                      (-n) 8192
[..]

Wenn ein Daemon bereits ausgeführt wird, muss er neu gestartet werden, damit das neue Limit erreicht wird. Wenn der Dämon manuell von einer Benutzersitzung aus gestartet wird, muss sich der Benutzer erneut anmelden, um das neue Limit zu erhalten.

Alternativ können Sie zusätzliche Grenzwerte /etc/security/limits.confnatürlich auch direkt in angeben - ich bevorzuge jedoch den .dVerzeichnisansatz für eine bessere Wartbarkeit.

Verwenden Sie zum Erzwingen unterschiedlicher Soft / Hard-Grenzwerte zwei Einträge, z

debian-transmission soft nofile 4096
debian-transmission hard nofile 8192

(Begründung dahinter: Der Soft-Wert wird festgelegt, nachdem sich der Benutzer angemeldet hat, aber ein Benutzerprozess darf das Limit bis zum Hard-Limit erhöhen.)

Die limits.conf/ limits.d-Konfiguration wird von verwendet pam_limits.so, die in aktuellen Linux-Distributionen standardmäßig aktiviert ist.

verbunden

Es gibt auch eine systemweite Beschränkung für Linux /proc/sys/fs/file-max:

Diese Datei definiert eine systemweite Begrenzung der Anzahl geöffneter Dateien für alle Prozesse.

Zum Beispiel die Standardeinstellung unter Ubuntu 10.04:

$  cat /proc/sys/fs/file-max
786046

Die Pseudodatei /proc/sys/fs/file-nrenthält weitere Informationen, z

$ cat /proc/sys/fs/file-nr
1408    0   786046

die Anzahl der zugewiesenen Dateihandles (dh die Anzahl der derzeit geöffneten Dateien); die Anzahl der freien Dateihandles; und die maximale Anzahl von Dateihandles

Einerseits müssen Sie möglicherweise auch das systemweite file-maxLimit anpassen , falls es sehr klein ist und / oder das System bereits sehr ausgelastet ist. Auf der anderen Seite file-maxreicht es nicht aus , nur zu erhöhen , da dies keinen Einfluss auf die vom pam_limits-Mechanismus erzwungenen Soft / Hard-Grenzwerte hat.

So ändern Sie file-maxin der Befehlszeile (kein Neustart erforderlich):

# sysctl -w fs.file-max=786046

Für dauerhafte Änderungen fs.file-max=786046zu /etc/sysctl.confoder hinzufügen /etc/sysctl.d.

Die Obergrenze für fs.file-maxwird in aufgezeichnet fs.nr_open. Zum Beispiel (wieder) unter Ubuntu 10.04:

$ sysctl -n fs.nr_open
1048576

(das ist 1024 * 1024)

Dieses System ist auch konfigurierbar.


1
Vielen Dank für die letzte Information - Ich habe mir am Kopf gekratzt, um herauszufinden, warum ich in /etc/security/limits.conf
Liczyrzepa am
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.