So ändern Sie Kernel-Laufzeitparameter auf persistente und nicht-persistente Weise

So ändern Sie Kernel-Laufzeitparameter auf persistente und nicht-persistente Weise

In Teil 13 Von dieser Serie LFCS (Linux Foundation Certified Sysadmin) haben wir erläutert.

In ähnlicher Weise können Sie die Befehlszeile in einem laufenden Linux-System verwenden, um bestimmte Laufzeit-Kernel-Parameter als einmalige Änderung oder dauerhaft durch Bearbeiten einer Konfigurationsdatei zu ändern.

Daher dürfen Sie Kernelparameter ohne große Schwierigkeiten aktivieren oder deaktivieren, wenn dies erforderlich ist, da das System zu erwarten ist.

Einführung des /proc -Dateisystems vorstellen

Die neueste Spezifikation des Dateisystem -Hierarchiestandards zeigt dies an /proc Repräsentiert die Standardmethode für den Umgang mit Prozess- und Systeminformationen sowie andere Kernel- und Speicherinformationen. Insbesondere, /proc/sys Dort finden Sie alle Informationen zu Geräten, Treibern und einigen Kernelfunktionen.

Die tatsächliche interne Struktur von /proc/sys hängt stark von dem verwendeten Kernel ab, aber Sie werden wahrscheinlich die folgenden Verzeichnisse im Inneren finden. Im Gegenzug enthält jeder von ihnen andere Unterverzeichnisse, bei denen die Werte für jede Parameterkategorie beibehalten werden:

  1. Dev: Parameter für bestimmte Geräte, die mit der Maschine verbunden sind.
  2. fs: Dateisystemkonfiguration (Quoten und Inodes, zum Beispiel).
  3. Kernel: Kernelspezifische Konfiguration.
  4. Netz: Netzwerkkonfiguration.
  5. VM: Verwendung des virtuellen Speichers des Kernels.

Um die Kernel -Laufzeitparameter zu ändern, werden wir die verwenden sysctl Befehl. Die genaue Anzahl der Parameter, die geändert werden können, kann angezeigt werden, wobei:

# sysctl -a | WC -l 

Wenn Sie die vollständige Liste der Kernelparameter anzeigen möchten, tun Sie einfach:

# sysctl -a 

Da die Ausgabe des obigen Befehls aus vielen Zeilen besteht, können wir eine Pipeline verwenden, gefolgt von weniger, um sie genauer zu inspizieren:

# sysctl -a | weniger 

Schauen wir uns die ersten Zeilen an. Bitte beachten Sie, dass die ersten Zeichen in jeder Zeile mit den Namen der Verzeichnisse entsprechen /proc/sys:

Verstehe Linux /Proc -Dateisystem

Zum Beispiel die hervorgehobene Linie:

Dev.CD-ROM.Info = Laufwerksname: SR0 

weist darauf hin, dass SR0 ist ein Alias ​​für das optische Laufwerk. Mit anderen Worten, so ist der Kernel "siehtDas Laufwerk und verwendet diesen Namen, um darauf zu verweisen.

Im folgenden Abschnitt werden wir erklären, wie Sie andere „wichtigere“ Kernel -Laufzeitparameter unter Linux ändern können.

So ändern oder modifizieren Sie Linux -Kernel -Laufzeitparameteres

Basierend auf dem, was wir bisher erklärt haben, ist leicht zu erkennen, dass der Name eines Parameter /proc/sys wo es gefunden werden kann.

Zum Beispiel:

Dev.CD-ROM.autoclose →/proc/sys/dev/cdrom/autoclose net.IPv4.ip_forward →/proc/sys/net/ipv4/ip_forward 

Überprüfen Sie die Linux -Kernel -Parameter

Trotzdem können wir den Wert eines bestimmten Linux -Kernel -Parameters unter Verwendung einer beiden anzeigen sysctl gefolgt vom Namen des Parameters oder dem Lesen der zugehörigen Datei:

# sysctl dev.CD-ROM.autoclose # cat/proc/sys/dev/cdrom/autoclosse # sysctl netz.IPv4.ip_forward # cat/proc/sys/net/ipv4/ip_forward 
Überprüfen Sie die Linux -Kernel -Parameter

Setzen oder ändern Sie Linux -Kernel -Parameter

Um den Wert für einen Kernel -Parameter festzulegen, können wir auch verwenden sysctl, aber mit dem -w Option und gefolgt vom Namen des Parameters, des gleichen Vorzeichens und des gewünschten Wertes.

Eine andere Methode besteht aus der Verwendung Echo Um die mit dem Parameter zugeordnete Datei zu überschreiben. Mit anderen Worten, die folgenden Methoden entsprechen der Deaktivierung der Paket -Weiterleitungsfunktionen in unserem System (was übrigens der Standardwert sein sollte, wenn ein Kasten keinen Verkehr zwischen den Netzwerken übergeben soll):

# echo 0>/proc/sys/net/ipv4/ip_forward # sysctl -w net.IPv4.ip_forward = 0 

Es ist wichtig zu beachten, dass Kernel -Parameter, die verwendet werden sysctl wird nur während der aktuellen Sitzung durchgesetzt und verschwindet, wenn das System neu gestartet wird.

Um diese Werte dauerhaft festzulegen, bearbeiten Sie /etc/sysctl.Conf mit den gewünschten Werten. Zum Beispiel zum Deaktivieren der Paketweiterleitung in /etc/sysctl.Conf Stellen Sie sicher, dass diese Zeile in der Datei angezeigt wird:

Netz.IPv4.ip_forward = 0 

Führen Sie dann den folgenden Befehl aus, um die Änderungen auf die laufende Konfiguration anzuwenden.

# sysctl -p 

Andere Beispiele für wichtige Kernel -Laufzeitparameter sind:

fs.Dateimax Gibt die maximale Anzahl von Datei behandelt, die der Kernel für das System zuweisen kann. Abhängig von der beabsichtigten Verwendung Ihres Systems (Web- / Datenbank- / Dateiserver, um einige Beispiele zu nennen) möchten Sie diesen Wert möglicherweise ändern, um die Anforderungen des Systems zu erfüllen.

Andernfalls erhalten Sie eine “Zu viele offene DateienDie Fehlermeldung im besten Fall und kann das Betriebssystem im schlimmsten Fall verhindern.

Wenn Sie sich aufgrund eines unschuldigen Fehlers in dieser letzten Situation befinden, starten Sie im Einzelbenutzermodus (wie in Teil 13 erläutert - Konfigurieren und Fehlerbehebung bei Linux -Grub -Boot -Loader) und bearbeiten /etc/sysctl.Conf wie zuvor angewiesen. Um die gleiche Einschränkung auf der Basis pro Benutzer festzulegen.

Kernel.sysrq wird verwendet, um das zu aktivieren Sysrq Taste in Ihrer Tastatur (auch als Druckbildschirm -Taste bezeichnet), damit bestimmte Schlüsselkombinationen Notfallaktionen aufrufen können, wenn das System nicht mehr reagiert.

Der Standardwert (16) zeigt an, dass das System das ehren wird ALT+SYSRQ+Schlüssel Kombination und führen Sie die in der aufgeführten Aktionen aus sysrq.C Dokumentation im Kernel gefunden.org (wobei der Schlüssel ein Buchstaben im B-Z-Bereich ist). Zum Beispiel, Alt+sysrq+b Starten Sie das System mit einem strengen System (verwenden Sie dies als letztes Ausweg, wenn Ihr Server nicht mehr reagiert).

Warnung! Versuchen Sie nicht, diese Schlüsselkombination auf einer virtuellen Maschine zu drücken, da dies Ihr Host -System zum Neustart zwingen kann!

Wenn auf eingestellt ist 1, Netz.IPv4.ICMP_ECHO_IGNORE_ALL Ignoriere Ping -Anfragen und ließ sie auf Kernelebene fallen. Dies ist im folgenden Bild angezeigt - beachten Sie, wie Ping -Anforderungen verloren gehen, nachdem dieser Kernel -Parameter festgelegt wurde:

Blockieren Sie Ping -Anfragen unter Linux

Eine bessere und einfachere Möglichkeit, einzelne Laufzeitparameter einzustellen, wird verwendet .Conf Dateien im Inneren /etc/sysctl.D, gruppieren sie nach Kategorien.

Zum Beispiel anstatt zu setzen Netz.IPv4.ip_forward = 0 Und Netz.IPv4.ICMP_ECHO_IGNORE_ALL = 1 In /etc/sysctl.Conf, Wir können eine neue Datei namens erstellen Netz.Conf innen /etc/sysctl.D:

# Echo "Netz.IPv4.ip_forward = 0 "> /etc /sysctl.D/Netz.Conf # echo "Netz.IPv4.ICMP_echo_ignore_all = 1 ">> /etc /sysctl.D/Netz.Conf 

Wenn Sie diesen Ansatz verwenden, vergessen Sie nicht, dieselben Zeilen aus zu entfernen /etc/sysctl.Conf.

Zusammenfassung

In diesem Artikel haben wir erklärt sysctl, /etc/sysctl.Conf, und Dateien im Inneren /etc/sysctl.D.

Im sysctl Dokumente finden Sie weitere Informationen zur Bedeutung mehr Variablen. Diese Dateien stellen die vollständigste Dokumentationsquelle zu den Parametern dar, die über SYSCTL festgelegt werden können.

Haben Sie diesen Artikel nützlich gefunden?? Wir hoffen sicher, dass Sie es getan haben. Zögern Sie nicht, uns mitzuteilen, ob Sie Fragen oder Vorschläge haben, um sich zu verbessern.

Werden Sie ein Linux -zertifizierter Systemadministrator