Einführung
In diesem Lab lernen Sie, wie Sie überprüfen können, ob die ulimit-Einstellungen in Linux korrekt angewendet werden. Sie werden verschiedene Methoden zur Überprüfung von Ressourcenlimits erkunden, beginnend mit der Anzeige der aktuellen Grenzwerte der Shell mithilfe von ulimit -a.
Anschließend werden Sie die systemweite Konfigurationsdatei /etc/security/limits.conf untersuchen, um zu verstehen, wie Grenzwerte für Benutzer und Gruppen festgelegt werden. Abschließend lernen Sie, wie Sie die tatsächlich auf einen laufenden Prozess angewendeten Grenzwerte überprüfen können, indem Sie seinen /proc-Eintrag untersuchen. Dieser praktische Ansatz vermittelt ein umfassendes Verständnis davon, wie Ressourcenlimits funktionieren und wie Sie damit verbundene Probleme in einer Linux-Umgebung beheben können.
Anzeigen der Grenzwerte mit ulimit -a
In diesem Schritt lernen Sie über Ressourcenlimits in Linux mithilfe des ulimit-Befehls. Ressourcenlimits steuern die maximale Menge an Systemressourcen, die ein Prozess nutzen kann. Dies ist wichtig für die Systemstabilität und verhindert, dass ein einzelner Prozess alle verfügbaren Ressourcen verbraucht.
Der ulimit-Befehl ermöglicht es Ihnen, diese Grenzwerte für die aktuelle Shell-Sitzung und alle von ihr gestarteten Prozesse anzuzeigen und festzulegen.
Um alle aktuellen Ressourcenlimits anzuzeigen, öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein:
ulimit -a
Drücken Sie die Eingabetaste.
Sie werden eine Ausgabe ähnlich der folgenden sehen:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) <placeholder>
max locked memory (kbytes, -l) <placeholder>
max memory size (kbytes, -m) unlimited
open files (-n) <placeholder>
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) <placeholder>
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) <placeholder>
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Die Ausgabe zeigt verschiedene Ressourcenlimits, wie die maximale Anzahl offener Dateien (-n), die maximale Anzahl von Benutzerprozessen (-u) und die maximale Stackgröße (-s). Der Wert unlimited bedeutet, dass für diese Ressource kein festgelegter Grenzwert existiert.
Das Verständnis dieser Grenzwerte ist entscheidend für die Diagnose von Leistungsproblemen oder unerwartetem Programmverhalten. Beispielsweise, wenn ein Programm fehlschlägt, weil es nicht genügend Dateien öffnen kann, wäre die Überprüfung des open files-Limits mit ulimit -a ein guter erster Schritt.
Sie können auch einzelne Grenzwerte anzeigen, indem Sie die entsprechende Option angeben. Beispielsweise, um das Limit für die Anzahl offener Dateien anzuzeigen:
ulimit -n
Dies gibt eine einzelne Zahl aus, die das aktuelle Limit für offene Dateien darstellt.
Experimentieren Sie mit dem ulimit -a-Befehl in Ihrem Terminal. Machen Sie sich mit den verschiedenen Arten von angezeigten Grenzwerten vertraut.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
Überprüfen der Grenzwertkonfiguration mit cat /etc/security/limits.conf
Im vorherigen Schritt haben Sie ulimit -a verwendet, um die aktuellen Ressourcenlimits für Ihre Shell-Sitzung anzuzeigen. Diese Grenzwerte werden oft systemweit in einer Datei namens /etc/security/limits.conf konfiguriert.
Diese Datei ist Teil des Pluggable Authentication Modules (PAM)-Frameworks und ermöglicht es Administratoren, Ressourcenlimits für Benutzer und Gruppen beim Anmelden festzulegen.
Lassen Sie uns den Inhalt dieser Konfigurationsdatei mithilfe des cat-Befehls anzeigen. cat ist ein einfacher Befehl, der zum Anzeigen des Inhalts von Dateien verwendet wird.
Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein:
cat /etc/security/limits.conf
Drücken Sie die Eingabetaste.
Sie werden den Inhalt der limits.conf-Datei sehen. Die Ausgabe sieht in etwa so aus (Kommentare und spezifische Einträge können variieren):
## /etc/security/limits.conf
#
#This file sets the limits for the resources available to the login session of
#users and groups. It is used together with the pam_limits module.
#
## (it is recommended to use #include files from /etc/security/limits.d/)
#
#* soft core 0
#root hard core unlimited
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc unlimited
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
Diese Datei verwendet ein einfaches Format:
<domain> <type> <item> <value>
<domain>: Gibt den Benutzer oder die Gruppe an, auf die das Limit angewendet wird. Es kann ein Benutzername, ein Gruppenname (vorangestellt von@) oder*für alle Benutzer sein.<type>: Kannsoftoderhardsein.soft-Limits sind die aktuellen Grenzwerte, die vom Benutzer erhöht werden können (bis zumhard-Limit).hard-Limits sind die maximalen Grenzwerte, die ein Nicht-Root-Benutzer nicht überschreiten kann.
<item>: Das Ressourcenobjekt, das begrenzt wird (z. B.nprocfür die Anzahl von Prozessen,nofilefür die Anzahl offener Dateien).<value>: Der Grenzwert.
Zeilen, die mit # beginnen, sind Kommentare und werden ignoriert.
Beachten Sie die Zeile ## (it is recommended to use #include files from /etc/security/limits.d/). Dies zeigt an, dass system- oder anwendungsspezifische Grenzwerte oft in separaten Dateien im Verzeichnis /etc/security/limits.d/ platziert werden. Dies hilft, die Hauptdatei limits.conf sauber und organisiert zu halten.
Obwohl Sie diese Datei in diesem Lab nicht ändern werden, ist es wichtig, ihre Struktur und ihren Zweck für die Systemadministration zu verstehen. Die Grenzwerte, die Sie mit ulimit -a gesehen haben, stammen oft von den Einstellungen in dieser Datei und in den Dateien in limits.d.
Klicken Sie auf Weiter, um zum nächsten Schritt zu gelangen.
Überprüfen der Prozessgrenzwerte mit cat /proc/self/limits
In den vorherigen Schritten haben Sie über ulimit zur Anzeige der aktuellen Sitzungslimits und über /etc/security/limits.conf für die systemweite Konfiguration gelernt. Jetzt schauen wir uns an, wie ein laufender Prozess seine eigenen Grenzwerte meldet.
Linux bietet ein virtuelles Dateisystem namens /proc, das Informationen über laufende Prozesse und den Systemkern enthält. Jeder laufende Prozess hat ein Verzeichnis unter /proc, das nach seiner Prozess-ID (PID) benannt ist.
Das spezielle Verzeichnis /proc/self ist ein symbolischer Link, der auf das /proc-Verzeichnis des Prozesses zeigt, der darauf zugreift. Wenn Sie also in Ihrem Terminal auf /proc/self zugreifen, betrachten Sie die Informationen für Ihren aktuellen Shell-Prozess.
Im Verzeichnis /proc/self befindet sich eine Datei namens limits, die die Ressourcenlimits für diesen bestimmten Prozess enthält.
Lassen Sie uns die Grenzwerte für Ihren aktuellen Shell-Prozess mithilfe von cat anzeigen:
cat /proc/self/limits
Drücken Sie die Eingabetaste.
Sie werden eine Ausgabe ähnlich der folgenden sehen:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes unlimited unlimited processes
Max open files 1048576 1048576 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals <placeholder> <placeholder> signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Diese Ausgabe zeigt die Soft Limit und Hard Limit für jede Ressource, ähnlich wie bei ulimit -a. Die Werte hier spiegeln die tatsächlichen Grenzwerte wider, die auf den Prozess angewendet werden, der den cat-Befehl ausgeführt hat (Ihre Shell).
Vergleichen Sie die Ausgabe von cat /proc/self/limits mit der Ausgabe von ulimit -a aus dem ersten Schritt. Sie sollten feststellen, dass die Werte übereinstimmen, da ulimit -a die Grenzwerte des aktuellen Shell-Prozesses meldet.
Das /proc-Dateisystem ist ein leistungsstarkes Werkzeug zur Untersuchung des Zustands Ihres Linux-Systems und seiner Prozesse. Die limits-Datei in jedem Prozessverzeichnis bietet eine direkte Möglichkeit, die für diesen bestimmten Prozess geltenden Ressourcenlimits zu überprüfen.
Sie haben nun drei verschiedene Möglichkeiten kennengelernt, mit Ressourcenlimits in Linux zu interagieren: das Anzeigen der aktuellen Sitzungslimits mit ulimit -a, das Untersuchen der systemweiten Konfiguration in /etc/security/limits.conf und das Überprüfen der Grenzwerte für einen bestimmten Prozess über /proc/<PID>/limits (oder /proc/self/limits).
Klicken Sie auf Weiter, um dieses Lab abzuschließen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie überprüfen können, ob die ulimit-Einstellungen in Linux angewendet werden. Sie haben begonnen, indem Sie den Befehl ulimit -a verwendet haben, um die aktuellen Ressourcenlimits für die Shell-Sitzung anzuzeigen. Dabei haben Sie die verschiedenen Grenzwerte wie offene Dateien, Benutzerprozesse und Stackgröße verstanden. Dieser Befehl bietet einen schnellen Überblick über die Grenzwerte, die von Prozessen, die aus der aktuellen Shell gestartet werden, geerbt werden.
Als Nächstes haben Sie die systemweite Konfigurationsdatei /etc/security/limits.conf mit cat untersucht. Diese Datei definiert die Standard-Ressourcenlimits für Benutzer und Gruppen, die beim Anmelden angewendet werden. Schließlich haben Sie die tatsächlichen Ressourcenlimits für einen laufenden Prozess überprüft, indem Sie /proc/self/limits untersucht haben. Diese Datei zeigt die effektiven Grenzwerte für den aktuellen Prozess und demonstriert, wie Sie die auf eine bestimmte Prozessinstanz angewendeten Grenzwerte überprüfen können.



