1. Startseite
  2. System
  3. Der sysctl-Befehl in Linux

Der sysctl-Befehl in Linux

Als Linux-Systemadministrator musst du gelegentlich das Standardverhalten des Kernels anpassen. Dazu gehört das Aktivieren des magischen SysRq-Schlüssels oder das Erhöhen der Anzahl von Verbindungen, die der Kernel akzeptiert. Die Kernel-Parameter können bei der Kernelerstellung, beim Systemstart oder zur Laufzeit gesetzt werden.

Dieser Artikel erklärt dir die Verwendung des sysctl-Befehls, um die Kernel-Parameter zur Laufzeit einzusehen und zu ändern.

Anzeigen der Kernelparameter mit sysctl

Um alle aktuellen Kernelparameter anzuzeigen, rufst du den Befehl sysctl mit der Option -a auf:

sysctl -a

Damit wird eine umfangreiche Liste ausgegeben, die den Namen jedes Parameters und seinen Wert enthält:

abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
...

Jeder Benutzer kann die aktuellen Kernelparameter einsehen, doch nur der Root-Benutzer kann ihre Werte ändern.

Um den Wert eines einzelnen Parameters zu überprüfen, gibst du einfach seinen Namen als Argument an sysctl ein. Beispielsweise, um den aktuellen Swappiness-Wert zu überprüfen, verwendest du:

sysctl vm.swappiness
vm.swappiness = 60

Swappiness ist eine Eigenschaft des Linux-Kernels, die bestimmt, wie häufig das System den Swap-Speicher verwendet.

Der sysctl-Befehl liest die Informationen aus dem /proc/sys-Verzeichnis. Dieses virtuelle Verzeichnis enthält Dateiobjekte, mit denen du die aktuellen Kernel-Parameter einsehen und festlegen kannst.

Du kannst einen Parameterwert auch anzeigen, indem du den Inhalt der entsprechenden Datei direkt anschaust. Der Unterschied besteht lediglich in der Darstellung der Datei. Beispielsweise liefern sowohl sysctl vm.swappiness als auch cat /proc/sys/vm/swappiness die gleiche Ausgabe. Bei Verwendung von sysctl werden die Verzeichnisschrägstriche durch Punkte ersetzt und der Teil proc.sys wird übernommen.

Ändern der Kernelparameter mit sysctl

Um einen Kernel-Parameter zur Laufzeit festzulegen, führe den Befehl sysctl mit dem Parametername und dem gewünschten Wert im folgenden Format aus:

sysctl -w parameter=wert

Falls der Wert Leer- oder Sonderzeichen enthält, schließe den Wert in Anführungszeichen ein. Du kannst auch mehrere Parameter=Wert-Paare im selben Befehl übergeben.

Sei besonders vorsichtig, wenn du Kernel-Einstellungen auf einem Produktivsystem änderst, da dadurch der Kernel instabil werden kann und du das System neu starten musst.

Um beispielsweise die IPv4-Paketweiterleitung zu aktivieren, musst du Folgendes ausführen:

sysctl -w net.ipv4.ip_forward=1

Die Änderung wird sofort wirksam, aber sie ist nicht dauerhaft. Nach einem Neustart des Systems wird der Standardwert geladen.

Um einen Parameter dauerhaft zu setzen, musst du die Einstellungen in die /etc/sysctl.conf oder eine andere Konfigurationsdatei im Verzeichnis /etc/sysctl.d schreiben:

sysctl -w net.ipv4.ip_forward=1 /etc/sysctl.conf

Eine andere Möglichkeit, Parameter zu ändern, ist der echo-Befehl, um die Einstellungen in die Dateien im Verzeichnis /proc/sys zu schreiben. Anstatt den obigen Befehl auszuführen, kannst du zum Beispiel Folgendes verwenden:

echo 1 > /proc/sys/net/ipv4/ip_forward

Mit der Option -p kannst du die Einstellungen aus einer Konfigurationsdatei laden:

sysctl -p /etc/sysctl.d/file_name.conf

Wenn keine Datei angegeben wird, liest sysctl die Datei /etc/sysctl.conf.

Fazit

Mithilfe des sysctl-Befehls kannst du die Parameter des Linux-Kernels einsehen und ändern.

Fühle dich frei, einen Kommentar zu hinterlassen, wenn du Fragen hast.

War dieser Beitrag hilfreich?

Verwandte Beiträge