So lesen und ändern Sie den Wert von Kernelparametern mit SysCTL

So lesen und ändern Sie den Wert von Kernelparametern mit SysCTL

SYSCTL ist ein Dienstprogramm, das standardmäßig in allen modernen Linux -Verteilungen installiert ist. Es wird verwendet, um den Wert der Kernelparameter zur Laufzeit zu lesen und zu schreiben. Die verfügbaren Parameter sind diejenigen, die unter dem aufgeführt sind /proc pseudo-filesystem und speziell unter dem /proc/sys Verzeichnis. In diesem Artikel lernen wir, wie man dieses Dienstprogramm nutzt, wie Änderungen vorgenommen werden können und wie man Einstellungen aus einer Datei „manuell“ lädt.

In diesem Tutorial lernen Sie:

  • So lesen Sie den Wert der Kernelparameter
  • So ändern Sie den Wert der Kernelparameter zur Laufzeit
  • Wie man Änderungen vornimmt, bleibt ein Neustart bestehen
  • So laden Sie Einstellungen aus einer Datei manuell
So lesen und ändern Sie den Wert von Kernelparametern mit SysCTL

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Verteilung unabhängig
Software sysctl
Andere Root -Privilegien zur Änderung der Kernelparameter
Konventionen # - Erfordert, dass gegebene Linux -Commands mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mithilfe von verwendet werden können sudo Befehl
US

Kernelwerte lesen

Das Verhalten des Linux -Kernels kann geändert werden, indem der Wert einiger Parameter selbst zur Laufzeit geändert wird. Die verfügbaren Parameter sind solche, auf die über die zugegriffen werden kann /proc pseudo-filesystem unter dem /proc/sys Verzeichnis. Wir können die verwenden Baum Befehl, eine Vorstellung von seinem Inhalt zu bekommen:

$ Baum /proc /sys /proc /sys ├── │ └ └── vsyscall32 ├── Krypto │ └── FIPS_Enabled ├── Debugug │ ├── │ └── KPROBES-OPTIMISION ├├ ├├ ├├ ├├ ├├ ├ ├├ ├ ├├ ├ ├├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ dev ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ ├ │ │wort │ ├── cdrom │ │ ├── autoclose │ │ ├── autoeject │ │ ├── check_media │ │ ├── debug │ │ ├── info │ │ └── lock │ ├── hpet │ │ └─ ─ Max-User-Freq. RAID │ │ ├── Speed_limit_max │ │ └── └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └ └autoload […] 


Die Ausgabe des obigen Befehls wird aus offensichtlichen Gründen abgeschnitten, gibt jedoch eine Vorstellung davon, wovon wir sprechen. Wenn SysCTL mit dem aufgerufen wird -A Option (kurz für --alle), es druckt den Wert aller verfügbaren Kernelparameter:

$ sysctl sysctl -a abi.vsyscall32 = 1 Crypto.fips_enabled = 0 debugug.Exception-Trace = 1 Debugug.KPROBES-OPTIMISION = 1 Dev.CD-ROM.autoclose = 1 dev.CD-ROM.auteject = 0 dev.CD-ROM.check_media = 0 […] 

Wenn wir den Wert eines bestimmten Parameters lesen wollen, müssen wir nur aufrufen sysctl und geben Sie den Namen des Parameters an, dessen Wert der Wert als Argument überprüfen möchten. Zum Beispiel den aktuellen Wert des RAID lesen speed_limit_max Parameter, der in der geschrieben ist /proc/sys/dev/raid/speed_limit_max Datei, wir würden ausführen:

$ sysctl dev.überfallen.Speed_Limit_max Dev.überfallen.speed_limit_max = 200000 

Beim Benutzen sysctl In einem Skript oder bei Verwendung der Ausgabe in einer Pipeline möchten wir es möglicherweise mit dem ausführen -N Option, das ist die Kurzform von (--Werte). Diese Option macht nur den aktuellen Wert eines angeforderten Parameters
zurückgegeben, wenn eine Frage durchgeführt wird; Der Schlüsselname wird weggelassen:

$ sysctl -n dev.überfallen.Speed_Limit_max 200000 

Ändern von Kernelparametern

So wie wir Kernel -Parameter lesen können, können wir ihre Werte zur Laufzeit ändern sysctl. Die Syntax, die zu verwenden ist, wenn wir eine solche Aktion ausführen möchten, ist sehr einfach:

sysctl variable = Wert 

Wir rufen einfach den Befehl auf und geben den variablen Namen und den Wert an, den wir ihm zuweisen möchten. Obwohl wir keine erhöhten Berechtigungen benötigen, um den Wert von Kernelparametern zu lesen, müssen wir den Befehl mit sudo (oder direkt als Stammbenutzer ausführen) vorab, um deren Werte zu ändern. Nehmen wir als Beispiel an, wir wollen den Wert von ändern Dev.CD-ROM.autoeject und stelle es auf 1; Wir würden schreiben:

$ sudo sysctl dev.CD-ROM.autoeject = 1 

Wenn wir den Wert eines Kernel -Parameters ändern, wird der Wert festgelegt, wenn der Befehl korrekt ausgeführt wird Stdout (Standardausgabe). Als Ausgabe des im obigen Beispiels verwendeten Befehls würden wir sehen:

Dev.CD-ROM.autoeject = 1 


Ein solches Verhalten kann geändert werden, indem SysCTL mit dem aufgerufen wird -Q Option (kurz für --ruhig).

Änderungen durchführen zu einem Neustart

Die Änderung, die wir mit SysCTL zur Laufzeit vornehmen. Um Änderungen vorzunehmen, überleben wir ein solches Ereignis, wir müssen sie in eine Datei in einem der speziellen Verzeichnisse schreiben. Was sind diese
Verzeichnisse? Nach Wichtigkeit geordnet:

  • /etc/sysctl.D
  • /run/sysctl.D
  • /usr/lib/sysctl.D

Die Dateien, in denen die Einstellungen gehostet werden .Conf Erweiterung und werden sortiert und am Start von der geladen systemdsysctl Service, in Lexikographie Bestellung, unabhängig vom Verzeichnis, in dem sie platziert werden.

Wenn in mehreren Verzeichnissen eine Datei mit demselben Namen vorhanden ist, werden nur die Einstellungen in der im Verzeichnis mit der höheren Priorität vorhandenen Einstellungen geladen. Dies bedeutet im Grunde, dass wir, wenn wir eine Datei vollständig überschreiben möchten, eine Datei mit demselben Namen in einem Verzeichnis mit einer höheren Priorität platzieren sollten. Wenn wir eine bestimmte Einstellung ändern möchten, können wir sie stattdessen in einer Datei mit einem Namen schreiben, der dazu führt.



Der /usr/lib/sysctl.D Das Verzeichnis soll die Einstellungen von Anbietern hosten. Wir sollten seinen Inhalt selten ändern. In den allermeisten Fällen möchten wir unsere Dateien in die platzieren /etc/sysctl.D Verzeichnis, das für Änderungen vorbehalten ist
vom Systemadministrator.

Lassen Sie uns ein Beispiel sehen. Angenommen, wir wollen den Kernel ändern Tupfer Wert. Wie wir wissen, bestimmt der Wert dieses Parameters, wie oft der Linux -Kernel die kopiert RAM Inhalt des Tauschraums. Der Wertebereich, der diesem Parameter zugeordnet werden kann 0 Zu 100: Ein höherer Wert bedeutet eine häufigere und aggressive Verwendung. Um den Wert dieses Parameters dauerhaft zu ändern, erstellen wir die /etc/sysctl.D/99-Swappiness.Conf Datei; Innerhalb davon schreiben wir:

VM.Swappiness = 1 

Da die Dateien aufgrund ihres Namens, wie wir sagten, in lexikografischer Reihenfolge geladen werden, können wir sicher sein, dass die Datei in letzter Zeit ziemlich geladen wird, und so wird die Einstellung wie erwartet angewendet.

Laden Sie Einstellungen aus einer Datei manuell laden

Seit hier haben wir gesehen, wie wir den Wert von Kernelparametern zur Laufzeit ändern können und wie Änderungen vorgenommen werden können .Conf Verlängerung. Was ist, wenn wir Einstellungen in einer Datei „manuell“ laden möchten, ohne das System neu zu starten und das neu zu laden systemdsysctl Service? Alles was wir tun müssen, ist, Sysctl mit dem aufzurufen -P Möglichkeit (--Belastung) und übergeben Sie den Pfad der Datei, in der die Einstellungen als Argument gehostet werden. Nehmen wir beispielsweise an, wir möchten den Inhalt des /etc/sysctl.D/99-Swappiness.Conf Datei, die wir im vorherigen Beispiel erstellt haben; Wir würden rennen:

$ sudo sysctl -p /etc /sysctl.D/99-Swappiness.Conf 

Wenn sysctl mit dem aufgerufen wird -P Option, aber es werden keine Argumente bereitgestellt, sie lädt Einstellungen aus dem /etc/sysctl.Conf Datei (ein Symlink, der auf diese Datei zeigt, benannt 99-SyscTl.Conf existiert in der /etc/sysctl.D Verzeichnis).

Schlussfolgerungen

In diesem Artikel haben wir gelernt, wie man das benutzt sysctl Dienstprogramm zum Lesen und Ändern des Wertes einiger Kernelparameter zur Laufzeit. Wir haben auch gesehen, wie Änderungen an diesen Parametern vorgenommen werden können .Conf Erweiterung, die in bestimmten Verzeichnissen platziert werden sollte und wie Einstellungen in einer Datei „manuell“ geladen werden. Durch Ändern des Wertes der Kernelparameter können wir unser System optimieren und es genau so funktionieren, wie wir brauchen. Wir können zum Beispiel, wie wir in einem früheren Tutorial gesehen haben, alle oder einige der SYSRQ -Funktionen aktivieren.

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 20.04
  • Mastering -Bash -Skriptschleifen beherrschen
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • So optimieren Sie die Laptop -Akkulaufzeit mit TLP unter Linux
  • GDB -Debugging -Tutorial für Anfänger
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Wie oft müssen Sie Ihren Linux -Server neu starten??
  • Wie man Kali Linux und Windows 10 Dual -Boot -Start hat
  • Verschachtelte Schleifen in Bash -Skripten