Debian Lenny. Für jeden Benutzer, einschließlich Root:
# cat /proc/sys/fs/file-max
262144
# sysctl fs.file-max
fs.file-max = 262144
# ulimit -Hn
1024
# ulimit -Sn
1024
Die Datei /etc/security/limits.conf
enthält keine unkommentierten Zeilen.
Woher bekommt es diese 1024?
Antwort1
Derfs.file-max
sysctlzeigt an, wie viele Datei-Handles vergeben werden könnensystemweit, während ulimit
Ressourcenlimits pro Prozess (oder pro UID) gelten. Ersteres wird beschrieben inDocumentation/sysctl/fs.txt:90
:
Dateimaximum und Dateinr.: Der Wert in file-max gibt die maximale Anzahl von Dateien an, Handles, die der Linux-Kernel zuweist. Wenn Sie viele von Fehlermeldungen über fehlende Datei-Handles, können Sie möchten dieses Limit erhöhen.
Das rlimit von 1024 Dateien wird nirgendwo explizit festgelegt; es ist im Kernel als Standardwert für PID 1 fest einprogrammiert, beiinclude/asm-generic/resource.h:81
:
/* * Boot-Zeit-Rlimit-Standardwerte für die Init-Aufgabe: */ #define INIT_RLIMITS \ { \ ... [RLIMIT_NOFILE] = { INR_OPEN_CUR, INR_OPEN_MAX }, \ ... }
welche Referenzen INR_OPEN_CUR
und INR_OPEN_MAX
ausinclude/linux/fs.h:26
:
#define INR_OPEN_CUR 1024 /* Anfangseinstellung für nfile rlimits */ #define INR_OPEN_MAX 4096 /* Hartes Limit für nfile rlimits */
Andere Prozesse erben einfach das Limit von init
(oder was auch immer PID 1 ist).
Warum /proc/1/limits
meldet Debian 1024 als Softund hartnfile-Limit? Ich weiß es nicht: weder die Sysvinit-Quellen noch die Debian-Kernel-Patches ändern es. Vielleicht könnten es die Initramfs-Skripte sein. (Ich verwende Arch, das den Standardwert 1024/4096 hat.)
Antwort2
Dieses Kernel-Commit kann die von @grawity gestellte Frage erklären:
Verpflichten 0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641 Autor: Tim Gardner Datum: Dienstag, 24. Mai 2011, 17:13:05 Uhr -0700 ulimit: Erhöhen Sie das standardmäßige harte ulimit für die Anzahl der Dateien auf 4096
Zumindest in RHEL5.4 ist es 1024/1024 und in RHEL6.2 1024/4096.