Was ist der Unterschied zwischen harten und weichen Grenzen in ulimit?
Für die Anzahl der geöffneten Dateien habe ich ein Softlimit von 1024 und ein Hardlimit von 10240. Es ist möglich, Programme auszuführen, die mehr als 1024 Dateien öffnen. Wofür ist die weiche Grenze?
open-files
ulimit
Daniel Kullmann
quelle
quelle
ulimit -n
? Versuchen Sie, eine Shell mit einem sehr niedrigen Wert (bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'
) auszuführen . Was ist die Ausgabe?Antworten:
Ein hartes Limit kann nur von root erhöht werden (jeder Prozess kann es senken). Aus Sicherheitsgründen ist dies nützlich: Ein Nicht-Root-Prozess kann ein festes Limit nicht überschreiten. Es ist jedoch unpraktisch, dass ein Nicht-Root-Prozess keine niedrigere Grenze als seine untergeordneten Prozesse haben kann.
Eine weiche Grenze kann jederzeit durch den Prozess geändert werden. So ist es praktisch, solange Prozesse zusammenarbeiten, aber nicht gut für die Sicherheit.
Ein typischer Anwendungsfall für weiche Limits besteht darin, Core-Dumps (
ulimit -Sc 0
) zu deaktivieren und sie gleichzeitig für einen bestimmten Prozess zu aktivieren, den Sie debuggen ((ulimit -Sc unlimited; myprocess)
).Der
ulimit
Shell-Befehl ist ein Wrapper um densetrlimit
Systemaufruf. Dort finden Sie die endgültige Dokumentation.Beachten Sie, dass einige Systeme möglicherweise nicht alle Grenzwerte implementieren. Insbesondere unterstützen einige Systeme keine prozessbezogenen Beschränkungen für Dateideskriptoren (unter Linux). Wenn dies bei Ihnen nicht der Fall ist, ist der Shell-Befehl möglicherweise ein No-Op.
quelle
ulimit -m
,RLIMIT_RSS
) ist ein Beispiel für ein Limit, das unter Linux nicht mehr gültig ist. Die Begrenzung des virtuellen Speichers (ulimit -v
,RLIMIT_AS
) funktioniert jedoch.setrlimit
(soweit dies durch das Hard-Limit zulässig ist, sofern es nicht als Root ausgeführt wird). Die meisten Programme haben keinen Befehl, mit dem der Benutzer das tun kann, aber Sie können versuchen, mit einem Debugger eine Verbindung zum Programm herzustellen und einensetrlimit
Aufruf auszulösen, oder Sie können unter Linux einen Aufruf ausführenprlimit
(für den ich keine Shell kenne) Nützlichkeit).prlimit
Shell-Dienstprogramm.Die harte Grenze ist für den Sicherheitszweck. Für einen Benutzer ohne Rootberechtigung kann er nur das Hard Limit von dem aktuell festgelegten Hard Limit herabsetzen. er kann es nicht erhöhen. Das Erhöhen des Hardlimits kann nur vom Root-Benutzer durchgeführt werden (oder möglicherweise mit sudo-Berechtigung, nicht sicher). Ein Benutzer ohne Rootberechtigung kann ein Limit (so genanntes Soft-Limit) auswählen, das für seine Prozesse im Bereich [0, Hard-Limit] liegen kann. Es ist die weiche Grenze, die von den Prozessen gesehen und berücksichtigt wird.
quelle