Ulimit

Aus Foxwiki

Wert einer Ressourcengrenze ausgeben lassen oder neu setzen

topic - Kurzbeschreibung

Beschreibung

Installation

Syntax

Parameter

Optionen

Konfiguration

Anwendung

Links

Dateien

Man-Page

Intern

Weblinks

Kontrollfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5




Welche Grenzen sind vorhanden?

$ ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) unlimited
cpu time             (seconds, -t) unlimited
max user processes            (-u) 2046
virtual memory        (kbytes, -v) unlimited

Option

–H 	 Harte Grenze. Alle Benutzer dürfen eine harte Grenze herabsetzen, aber nur privilegierte Benutzer können sie erhöhen.
–S 	 Weiche Grenze. Sie muss unterhalb der harten Grenze liegen.
–a 	 Gibt alle Grenzwerte aus
–c 	 Maximale Größe der Speicherabzüge (core-File)
–d 	 Maximale Größe eines Datensegments oder Heaps in Kilobyte
–f 	 Maximale Anzahl an Dateien (Standardoption)
–m 	 Maximale Größe des physischen Speichers in Kilobyte (Bash und Korn-Shell only)
–n 	 Maximale Anzahl Filedeskriptoren (plus 1)
–p 	 Größe des Pipe-Puffers (Bash und Korn-Shell only, meistens 512 Bytes)
–s 	 Maximale Größe eines Stacksegments in Kilobyte
–t 	 Maximale CPU-Zeit in Sekunden
–u 	 Maximale Anzahl von User-Prozessen
–v 	 Maximale Größe des virtuellen Speichers in Kilobyte

Anwendung

 $ ulimit -u 1000

Folgende ulimit-Werte werden z. B.  gern eingesetzt, um primitive DOS-(Denial of Service-)Angriffe zu erschweren,die Werte auch abhängig von der Anwendung eines Rechners). Am besten trägt man solche Werte in /etc/profile ein,(hierbei sind auch die anderen Profil- und Startup-Dateien in Erwägung zu ziehen

  • Core Dumps verhindern ulimit -c
  • keine Dateien größer 512 MB zulassen ulimit -f 512000
  • weiches Limit von max. 250 Filedeskriptoren ulimit -S -n 250
  • weiches Maximum von 100 Prozessen ulimit -S -u 100
  • Speicherbenutzung max. 50 MB ulimit -H -v 50000
  • weiches Limit der Speichernutzung 20 MB ulimit -S -v 20000
  • Mit diesem Befehl können die von der Shell und aus dieser gestarteten Prozesse verfügbaren Ressourcen beschränkt werden.
  • Der Administrator kann durch Verwendung des Kommandos in der /etc/profile einem jeden Benutzer, dessen Login-Shell die Bash ist, unwiderrufliche Schranken auferlegen.
  • Der Benutzer kann diese Werte dann nur verringern; aber niemals erhöhen (dies darf einzig Root).
  • Jede Ressource kann durch zwei Werte beschränkt werden.
  • Das Softlimit kann überschritten werden, während die Anforderung von Ressourcen, die das Hardlimit überschreiten mit einer Fehlermeldung abgewiesen werden. Softlimit setzt man mit der Option -L, das Hardlimit mit -H; ohne Option werden beide Limits mit ein und denselben Wert belegt.

Die Option -a bringt alle Ressourcen und die Softlimits zum Vorschein:

$ ulimit -a
core file size (blocks)     0           # -c
data seg size (kbytes)      unlimited   # -d
file size (blocks)          unlimited   # -f
max locked memory (kbytes)  unlimited   # -l
max memory size (kbytes)    unlimited   # -m
open files                  1024        # -n
pipe size (512 bytes)       8           # -p
stack size (kbytes)         unlimited   # -s
cpu time (seconds)          unlimited   # -t
max user processes          1024        # -u
virtual memory (kbytes)     unlimited   # -v

Hinter den einzelnen Ausgabezeilen haben wir die Optionen eingefügt, die Sie zur Manipulation eines konkreten Limits angeben müssen.

Eine core-Datei ist ein Speicherauszug, also ein Abbild des RAM.

  • Linux schreibt den Speicherbereich eines Prozesses, falls jener mit einem schwerwiegenden Fehler abbricht (z. B.  Speicherschutzverletzung) in eine Datei, die anschließend mittels eines Debuggers nach der Fehlerursache hin untersucht werden kann.
  • Dazu bedarf es allerdings weitreichender Programmiererfahrungen. Da diese Cores mehrere MByte groß werden können, empfiehlt sich deren Anlegen zu unterbinden (Wert 0).

Zu jedem Prozess gehören neben dem im RAM liegenden Programm noch ein Datensegment für (der Name sagt's schon) die Daten und ein Stack, der u.a zur Wertübergabe zwischen Funktionen verwendet wird. Wer nicht genau weiß, was er tut, tut gut daran, mit diesen Limits nichts zu tun.

Die weiteren Werte sollten selbsterklärend sein. Der Systemadministrator ist berechtigt, ein Limit aufzuheben, indem er an Stelle des Wertes das Schlüsselwort unlimited angibt.

Abschließend sei noch erwähnt, dass die vom System vorgegebenen Grenzen mit den hiesigen Werten nicht manipuliert werden können; dies geht nur durch Erzeugung eines neuen Kernels oder durch Änderungen einiger Parameter zur Laufzeit (siehe Prozessdateisystem).

Links

Intern

Extern