„ulimit“ ist ein interessanter Linux-Shell-Befehl, der das Ressourcenlimit des aktuellen Benutzers setzen oder melden kann.
Natürlich erfordert die Arbeit mit „ulimit“ aufgrund seiner Natur Admin-Zugriff (wenn der Wert geändert wird). Außerdem funktioniert es nur auf Systemen, die eine Steuerung über die Shell erlauben. Ohne Umschweife, fangen wir mit „ulimit“ an!
Feuern Sie das Terminal an und führen Sie den folgenden Befehl aus.
Das zeigt einen Fehler an, richtig? Und warum? Das liegt daran, dass „ulimit“ keine separate Binärdatei ist. Es ist in die Shell selbst eingebettet.
Grundlegende Verwendung
Führen Sie einfach den Befehl selbst aus.
Wie die Ausgabe vermuten lässt, kann der aktuelle Benutzer auf eine „unbegrenzte“ Menge von Ressourcen zugreifen. Im Wesentlichen bedeutet dies, dass der aktuelle Benutzer alle Ressourcen verbrauchen kann, die das aktuelle System unterstützt.
Um den Bericht im Detail zu erhalten, fügen Sie das Flag „-a“ am Ende hinzu. Dadurch werden alle Ressourcenbegrenzungen für den aktuellen Benutzer ausgegeben.
Hinweis: Es gibt 2 Arten von Ressourcenbegrenzungen: „hart“ und „weich“. Die „harte“ Ressourcenbegrenzung definiert die physische Grenze, die der Benutzer erreichen kann. Das „weiche“ Ressourcenlimit kann vom Benutzer verwaltet werden. Sein Wert kann bis zum „harten“ Limit gehen.
Die Systemressourcen werden in einer Konfigurationsdatei definiert, die sich unter „/etc/security/limits.conf“ befindet. „ulimit“ meldet beim Aufruf diese Werte.
Die verschiedenen Limits eines Benutzers prüfen
Wie wäre es, wenn man sich die einzelnen Parameter anzeigen lassen könnte? Dann rufen Sie „ulimit“ mit den jeweiligen Parametern auf.
Hinweis: Nicht alle dieser Befehle werden funktionieren, da nicht jedes System die Funktionen beinhaltet.
Um den Wert der maximalen „core file size“ zu überprüfen, verwenden Sie das Flag „-c“. Das Ergebnis wird in Blöcken angezeigt.
Für die maximale „data seg size“ (in Kilobytes), verwenden Sie das Flag „-d“.
Bei der Planung ist die Priorität wichtig. Prüfen Sie die maximale Planungspriorität des aktuellen Benutzers mit Hilfe des Flags „-e“.
Um die maximale Stapelgröße des aktuellen Benutzers zu prüfen, verwenden Sie das Flag „-s“.
Für die maximale Anzahl von Benutzerprozessen, verwenden Sie das Flag „-u“.
Für die maximale Anzahl von Threads, verwenden Sie das Flag „-T“.
Um die Größe des virtuellen Speichers zu erhalten, verwenden Sie das folgende.
Lassen Sie uns die Größe des Socket-Puffers überprüfen!
Dies ist ein interessanter Befehl. Der folgende Befehl meldet die Zeit, die jeder Prozess laufen darf.
Dateideskriptoren sind ein weiterer interessanter Teil des Linux-Ökosystems. Um herauszufinden, wie viele Dateideskriptoren ein Prozess haben kann, führen Sie den folgenden aus.
Die vollständige Liste der „ulimit“-Flags finden Sie auf der Hilfeseite von „ulimit“.
Werte setzen
Bis jetzt haben wir gesehen, wie man die Werte der Ressourcengrenzen des aktuellen Systems überprüft. Jetzt ist es an der Zeit zu sehen, wie man diese Werte manuell ändern kann.
Hinweis: Um das „harte“ Limit zu ändern, benötigen Sie Administratorrechte, d.h. „root“-Rechte. Stellen Sie sicher, dass Sie nicht alles durcheinander bringen!
Wir haben die Datei „limits.conf“ erwähnt, richtig? Das ist der Kern, der alle Limits, die für die Benutzer gelten, DEFINIERT.
Wie in der Datei gezeigt, muss jeder Eintrag der folgenden Struktur folgen.
Der Teil „Domäne“ kann einer der folgenden Werte sein.
- Ein bestimmter Benutzer
- Eine Gruppe
- Wildcard (* und %)
Der „Typ“-Teil lässt die folgenden Werte zu.
- „soft“ (für die Implementierung weicher Grenzen)
- „hard“ (für die Implementierung harter Grenzen)
Als Nächstes kommt der „item“-Teil. Die Liste der verfügbaren Optionen ist ziemlich lang! Hier sind einige der interessanten Optionen.
- Kern: Kerndateigröße (in KB).
- Daten: Maximale Datengröße (in KB)
- fsize: Maximale Dateigröße (in KB).
- memlock: Max locked-in-memory address space (in KB).
- nofile: Maximale Anzahl von Dateideskriptoren
- Stack: Maximale Größe des Stacks (in KB).
- cpu: Maximale CPU-Zeit (in MIN).
- maxlogins: Maximale Anzahl der Logins für den aktuellen Benutzer/Gruppe
- Priorität: Setzt die Priorität der Prozesse des Benutzers
- rtprio: Maximale Priorität in Echtzeit
In das Feld „Wert“ ist ein ganzzahliger Wert einzugeben. Beachten Sie, dass die Einheit jedes Feldes mit dem Wert des „item“-Teils verbunden ist.
Die Änderungen werden nach dem Beenden und erneuten Einloggen in das zugehörige Benutzerkonto wirksam.
Für ausführliche Informationen über die Konfigurationsdatei „limits.conf“ lesen Sie bitte die man-Seite.