ulimit
ist eine eingebaute Shell, kein externer Befehl. Es muss eingebaut werden, da es auf den Shell-Prozess selbst einwirkt, z. B . cd
: Die Grenzwerte sind wie das aktuelle Verzeichnis eine Eigenschaft dieses bestimmten Prozesses.
sudo bash -c 'ulimit -n 4096'
würde funktionieren, aber es würde das Limit für den sudo
nur von aufgerufenen Bash-Prozess ändern , was Ihnen nicht helfen würde.
Für jede Grenze gibt es zwei Werte: die harte Grenze und die weiche Grenze. Nur root kann das harte Limit erhöhen. Jeder kann das harte Limit senken und das weiche Limit kann in beide Richtungen geändert werden, mit der einzigen Einschränkung, dass es nicht höher als das harte Limit sein darf. Die weiche Grenze ist der tatsächliche Wert, auf den es ankommt.
Daher müssen Sie festlegen, dass für alle Prozesse ein festes Limit für offene Dateien von mindestens 4096 festgelegt wird. Sie können das weiche Limit bei 1024 belassen. Erhöhen Sie das weiche Limit, bevor Sie den Prozess starten, für den viele Dateien erforderlich sind. In /etc/security/limits.conf
, fügen Sie die Zeilen
paislee hard nofile 4096
paislee soft nofile 1024
Wo paislee
ist der Name des Benutzers, unter dem Sie Ihren Prozess ausführen möchten? Führen Sie in der Shell, die den Prozess startet, für den Sie ein höheres Limit festlegen möchten, Folgendes aus
ulimit -Sn unlimited
die weiche Grenze auf die harte Grenze zu erhöhen.
ulimit 4096
funktioniert nicht. Ich denke-n
ist richtig. Als Proof of Concept klappt es wenn ich erstmalsudo su - root
(aber nur für root wechsle).