So überprüfen Sie, ob die ulimit-Einstellungen in Linux angewendet werden

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558811{{"So überprüfen Sie, ob die ulimit-Einstellungen in Linux angewendet werden"}} linux/help -.-> lab-558811{{"So überprüfen Sie, ob die ulimit-Einstellungen in Linux angewendet werden"}} linux/cat -.-> lab-558811{{"So überprüfen Sie, ob die ulimit-Einstellungen in Linux angewendet werden"}} linux/env -.-> lab-558811{{"So überprüfen Sie, ob die ulimit-Einstellungen in Linux angewendet werden"}} end

Anzeige von Grenzwerten 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>: Kann soft oder hard sein.
    • soft-Limits sind die aktuellen Grenzwerte, die vom Benutzer erhöht werden können (bis zum hard-Limit).
    • hard-Limits sind die maximalen Grenzwerte, die ein Nicht-Root-Benutzer nicht überschreiten kann.
  • <item>: Das Ressourcenobjekt, das begrenzt wird (z. B. nproc für die Anzahl von Prozessen, nofile fü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 Prozesslimits 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.