Forumulimit: Einstellen des Hard-/Softlimits
Ottfried Meyer – Sonntag, 02. Oktober 2005 08:29 Uhr

Hi,

In letzter Zeit ist die Compilation von Blender zu einem echten
“System-Eater” geworden: Die ulimits für user werden überschritten
und der Prozess folglich abgeschossen.

Als root (JA! Ich weiss das…SOETWAS TUT MAN NICHT…:O) mit
hochgesetzten ulimits bekomme ich Blender aber man gerade eben
so noch kompiliert. Es gelingt mir aber nicht, die ulimits für
mich als user hochzusetzen.

Die ulimits für user stehen bei mir so:
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 4095
-n: file descriptors 1024
-l: locked-in-memory size (kb) 32
-v: address space (kb) unlimited
-x: file locks unlimited

Mein System läuft mit Linux 2.6.13.2(preemptiv) ohne KDE oder einem
anderen WindowsXP(tm)-Emulator sondern mit einem schlichten IceWM.
Es stehen 512 MB RAM und 2GB swap zur Verfügung. CPU: AMD 2400+
Ich bin der einzige User auf diesem System. Das System ist ein Eigenbau
(LFS).

Meine Frage:
1.) Wie bekomme ich die ulimits für user hochgesetzt, die ich als root
ohen Weiteres verändern kann.
2.) Welche Maximalwerte sollte ich dabei nicht überschreiten ?
3.) Gibt es — z.B. unter /proc — noch anderen Stellen, an denen
ich drehen kann, damit System-Eater wie die Blender-Compilation
mehr Chancen auf Leben haben? Es soll aber nicht in “gefährliche”
Aktionen ausarten wie Filesystemcorruption etc… ;O)

Herzlichen Dank im Voraus für jede Form von Hilfe !
Schönes Wochenende++ !!!
Meino

1 Antwort
man-draker – Sonntag, 02. Oktober 2005 13:19 Uhr

Vielleicht beantwortet das deine Frage:
——————————–
Tipp: Mehr File-Deskriptoren
Bei Serverprogrammen, die recht viele Dateien offen haben (z. B. squid), kann es vorkommen, daß die Maximalzahl der Dateideskriptoren nicht mehr ausreicht und deshalb keine neuen Verbindungen mehr akzeptiert werden. Dann muß man das Limit hochsetzen, das in der Regel einen Wert von 1024 hat. Den aktuellen Wert kann man mit dem Kommando ulimit -n feststellen. Das Heraufsetzen des Limits ist bei Linux recht einfach. Zuerst wird das Limit des Kernels hochgesetzt, z.B. auf 4096:

echo 4096 > /proc/sys/fs/file-max

Dann setzt man das Limit für die aktuelle Shell hoch (als User root):

ulimit -Hn 4096

Am besten sorgt man dafür, dass diese Kommandos in einem passenden RC-File beim Booten immer ausgeführt werden.

Damit auch Squid oder andere Programme in den Genuss des höheren Limits kommen, muss noch in der Datei /usr/include/bits/types.h der Wert von __FD_SETSIZE angepasst werden:

#define __FD_SETSIZE 4096

Dann übersetzt man die entsprechenden Programme neu.
——————————-

[1] http://www.netzmafia.de/skripten/buecher/iis2003/server-errata.html

Ottfried Meyer – Sonntag, 02. Oktober 2005 13:27 Uhr

Hi,

danke für Deine Antwort! :)
Nur wie ich schon andeutete, versuche ich einen Compiler-Process heile
durchzubekommen. Ich habe auch keinen Server sondern bin auf meinem
Desktop-System der alleinige “Herr der Ringe” :O)
Dann wollte ich auch nicht als root die ulimits anheben (was ohne
weiteres auf meiner Kiste möglich ist und daher auch keine Kernel-
Neucompilation nötig macht, sondern ich wollte wissen, wie ich als
user für Prozess edie ich als solcher starte, die ulimits hochgesetzt bekomme.

Siehe auch meine vorherige Mail.

Gibt es da irgendwelche Möglichkeiten?

Keep hacking!
Meino

Tobias Hunger – Sonntag, 02. Oktober 2005 16:18 Uhr

Schau’ mal in /etc/security/limits.conf.

Ottfried Meyer – Sonntag, 02. Oktober 2005 16:56 Uhr

Diese Datei existiert auf meinem System nicht.
Welcher Prozess liest denn /etc/limits.conf ?

Tobias Hunger – Montag, 03. Oktober 2005 10:56 Uhr

PAM arbeitet mit den Dateien in /etc/security. Hast Du die Pluggable Authentication Modules installiert? Eigentlich haben die alle Distributionen, aber bei Selbstbau-Kisten weiß man ja nie;-)

Ottfried Meyer – Montag, 03. Oktober 2005 11:31 Uhr

Vielen Dank für das Reply ! :))

Nope…nix PAM.

Ahahaber:
PAM kann doch eigentlich auch nur wieder etwas Rudimentäreres antriggern,
um die ulimits zu beeinflussen…schließlich existiert das “ulimits-Feature”
:O) auch ohne PAM….

Warum gelingt es mir, zwar als root und für root an den ulimits zu drehen, aber
jedewede Form, ulimits für user zu verstellen, versacken im Nirwana der
binären Ursuppe…

Das ist mir nicht bis zur Gänze begreiflich….

“ulimits -b brain unlimited” wäre in diesem Fall keine schlechte Sache,
aber aufgrund der Selbstbezüglichkeit dieses Problems, wird wohl daraus
vor Lösung desselbigen nichts….

(by the way: Kann man irgendwo hier im Forum anknipsen, dass man
eine Mail bekommt, wenn jemand geantwortet hat…sorry…is ein
bischen offtopic…)

Keep hacking!
Meino

man-draker – Montag, 03. Oktober 2005 20:22 Uhr

1. Als User hast du keine Chance, das ist die Domäne von root.

2. Was hindert dich, die gewünschten Werte als root zu setzen und per
su eine shell mit den hochgesetzten Werten zu benutzen?

Tobias Hunger – Montag, 03. Oktober 2005 23:03 Uhr

Stell Dir mal eine Multiuserkiste vor, bei der jeder User sich selbst die CPU-Limits auf unlimited setzt… und dann schau zu wie die Kiste ins stehen kommt, wenn mehrere irgendwelche Berechnungen anstoßen. Aus diesem Szenario heraus kommen die ulimits… es ist schon so gewollt, das man die als User immer nur runtersetzen darf:-)

/etc/security/limits.conf ist halt eine bequeme Möglichkeit die ulimits zentral zu setzen. Sonst könnte noch login die Finger im spiel haben… stehen die limits bei Dir evtl. in /etc/login.defs?

Wenn es auch da nicht gesetzt wird, dann wirst Du mal bei LFS nachfragen müssen, ob das da jemand weiß wo die das setzen.

Offtopic: Dieses Forum ist ziemlich primitiv… Mailbenachrichtigung und anderen Schnickes gibt es hier nicht:-(

Ottfried Meyer – Freitag, 07. Oktober 2005 04:56 Uhr

Hi,

Jau, schon klar, dass das Hochsetzen als solches von root gemacht werden
muss (das wäre ja noch schöner, wenn mir die User einfach so die ulimits
verdrehen könnten…das wäre ja geradewegs so, als würde man durch Drücken
auf “Esc” (hence the name) aus einer restricted Shell ausbrechen können :O)
:O))) 8-)))

Was mich interessierte war: Wie bekomme ich hochgesetzte ulimits “ins System
vererbt”…als “Grundeinstellung” quasi.

TECHNISCH hindert mich nichts daran, den Trick anzuwenden, den Du
nanntest…nur es muss doch /irgendwie/ möglich sein, im Bootvorgang oder
sonstwo höhere ulimits zu setzen…oder?

ulimits ist doch kein /SCHICKSAL/ oder /KARMA/ oder ?

(dies alles schrieb ich mit einem BREITEN freundlichen Grinsen im Gesicht —
auch wenn es eventuell angriffslustig oder empört klingt — KEINESWEGS so
gemeint!!!!!!! Alles nur Spass an der Rhetorik, am Herumformulieren ! :)

Schönes Wochendende !
Keep hacking!
mcc

eniprom – Dienstag, 12. Juni 2012 17:22 Uhr

kann man das was du meinst (und offensichtlich nicht so ganz rüberkommt) so darstellen:

balaenoptera ~ # date ; ulimit -u 300 ; ulimit -u
Di 12. Jun 19:08:42 CEST 2012
300

tb@balaenoptera ~ $ date ; ulimit -u
Di 12. Jun 19:09:27 CEST 2012
30

?

wenn ja (und unabhängig von limits.conf): nur beim neuen login bekommt ein normaler user die systemweiten limits mitgeliefert die zuvor gesetz wurden. ein bereits eingeloggter user bleibt in den zur startzeit seiner shell gesetzten limits gefangen. eine chroot-umgebung kann root auch nicht von aussen aufbohren. ist nicht vorgesehen.

(nach eigenen recherchen und ohne gewähr)