Gut..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Warum ulimit
respektlos mich so barbarisch?
Gut..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Warum ulimit
respektlos mich so barbarisch?
Antworten:
ulimit
ist Shell / Prozess spezifisch. Überspringen Sie die sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
dass beim Bestehen kein Fehler aufgetreten ist ulimit
. Normalerweise benötigt es eine externe Binärdatei, ulimit
ist jedoch eine eingebaute Shell.
which ulimit
. Nichts überraschendes.
Daniel Becks Antwort sagt nicht die ganze Wahrheit (in der Tat ist es ein bisschen Fingerspitzengefühl) und hilft Menschen nicht, die tatsächlich "sudo ulimit" machen müssen.
Das Problem ist, dass
Daniels Beispiel funktioniert nur in einer ganz bestimmten Situation (die zum Glück die Standardeinstellung ist).
Gegenbeispiel:
$ ulimit -s 8191 # set both hard and soft limits
$ ulimit -s # show current soft limit
8191
$ ulimit -s 16384 # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
Also setzen Sie das Limit mit ulimit -s
, und das ging und setzte sowohl weiche als auch harte Limits. Jetzt können Sie es nicht mehr höher einstellen.
An diesem Punkt könnten Sie denken, es zu versuchen sudo
; aber es wird nicht funktionieren, wegen dem, was Daniel geschrieben hat.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
Was hier passiert ist, ist, dass sudo
eine neue Shell gestartet wurde, in der sie lief ulimit
; und in DIESER Shell wurde das neue Ulimit gesetzt. Aber dann hat diese Shell ihre Arbeit beendet, wurde abgerissen, und jetzt sind Sie wieder in Ihrer vorherigen Shell mit ihrem vorherigen Ulimit.
Beweis:
$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s # It worked!
16384
# exit
exit
$ ulimit -s # ... but now we're back to the old ulimit.
8191
$
Warum genau hat Daniels Beispiel funktioniert? Aufgrund der Standard-Hard- und Soft-Limits von ulimit konnte er das Soft-Limit auf das Hard-Limit verschieben. Wir können es in Zeitlupe machen, um den Trick zu zeigen:
$ ulimit -Ss # show the Soft limit
8192
$ ulimit -Hs # show the Hard limit
65532
$ ulimit -s # by default, shows the Soft limit
8192
$ ulimit -s 16384 # set both the Soft and Hard limit
$ ulimit -s # shows the Soft limit
16384
$ ulimit -Hs # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385 # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$
Zusammenfassend: Wenn Sie Ihr hartes Limit festlegen und es erhöhen möchten, haben Sie in dieser Shell kein Glück , ... es sei denn, Sie bleiben als Superuser oder verwenden eine Beschwörung, um anschließend Berechtigungen zu löschen.
cd
.