Sie können die Softlimits und Hardlimits Ihres Systems mit ulimit -a
überprüfen Befehl.
- Soft Limits sind einfach die derzeit geltenden Limits.
- Hard-Limits markieren den Maximalwert, der durch Setzen eines Soft-Limits nicht überschritten werden kann.
Soft-Limits können von jedem Benutzer gesetzt werden, während Hard-Limits nur von Root geändert werden können. Limits sind eine Eigenschaft eines Prozesses . Sie werden vererbt, wenn ein untergeordneter Prozess erstellt wird, daher sollten systemweite Beschränkungen während der Systeminitialisierung in Init-Skripten und Benutzerbeschränkungen während der Benutzeranmeldung festgelegt werden, beispielsweise durch Verwendung von pam_limits
.
Beim Booten des Computers werden häufig Standardeinstellungen festgelegt. Auch wenn Sie Ihr ulimit in einer einzelnen Shell zurücksetzen, stellen Sie möglicherweise fest, dass es beim Neustart auf den vorherigen Wert zurückgesetzt wird. Möglicherweise möchten Sie Ihre Boot-Skripte nach vorhandenen ulimit-Befehlen durchsuchen, wenn Sie die Standardeinstellung ändern möchten.
Wenn die Beschränkung 1024 war, bedeutet das, dass Sie/Prozess maximal 1024 Dateien öffnen können. wenn Sie dieses Limit überschreiten, bedeutet das open
, pipe
und dup
Systemaufrufe schlagen fehl:
RLIMIT_NOFILE:
Gibt einen Wert an, der um eins größer ist als die maximale Dateideskriptornummer, die von diesem Prozess geöffnet werden kann. Versuche (open(2)
, pipe(2)
, dup(2)
, usw.), um dieses Limit zu überschreiten, führt zu dem Fehler EMFILE
.
Es ist eine Reihe offener Datei-Deskriptoren pro Prozess . Sie können alle auf dieselbe Datei oder auf verschiedene Dateien verweisen.
Die aktuellen Limits können Sie mit ulimit -a
einsehen in der Shell oder programmatisch mit getrlimit
. Die systemweiten Limits werden in /etc/security/limits.conf
gesetzt .
Das Dateisystem-Objektmodell unter Linux ist:
file descriptor -> file description -> dentry -> inode
- Dateideskriptor ist die von der Anwendung verwendete Ganzzahl.
- Dateibeschreibung ist die Kernel-Datenstruktur, zu der ein oder mehrere Dateideskriptoren gehören siehe.
- dentry ist der Dateiname. Eine Datei kann viele Namen haben (harte Links).
- Inode ist der Dateiinhalt.
dup
erstellt einen neuen Dateideskriptor für dieselbe Dateibeschreibung.open
erstellt einen neuen Dateideskriptor und eine Dateibeschreibung.