Festlegen des Dump-Speicherorts für Linux Core

Festlegen Des Dump Speicherorts Fur Linux Core



Was ist „Core Dump“ unter Linux?

Wenn ein Prozess unerwartet beendet wird, hinterlässt er häufig einen „Core Dump“ in Ihrem System. Darin ist eine entsprechende Nachricht enthalten. Ein Kern dient als Debugging-Tool und ist ein Speicherabbild, das auch die Debugging-Informationen enthält. Wenn Sie ein Benutzer sind, der ein Programm nicht debuggen möchte, können Sie einfach den Kern löschen:

$ rm Ader

Sie können es auch unberührt lassen, da der alte Kern überschrieben wird, wenn jemals ein neuer ausgegeben wird. Sie können das Core Dumping auch mit folgendem Befehl deaktivieren:







$ verkleinern -c 0

Wir können die Core-Dumps bei Bedarf generieren (z. B. über einen Debugger) oder sie können automatisch bei der Beendigung erstellt werden. Der Kernel initiiert Core-Dumps als Folge des abrupten Beendens eines Programms. Diese können für zusätzliche Operationen an ein anderes Programm (z. B. systemd-coredump) gesendet werden.



Wie es normalerweise der Fall ist, gibt es einen Kompromiss zwischen dem Sammeln der Daten für eine bessere Stabilität und Fehlerbehebung und dem Risiko, sensible Informationen aus Debug-Daten preiszugeben.



Was werden wir abdecken?

In diesem Artikel erfahren Sie, wie Sie den Speicherort von Core-Dumps unter Ubuntu 20.04 OS festlegen. Fangen wir jetzt an.





Generieren eines Core-Dumps

Sehen wir uns zunächst an, wie wir einen Core-Dump erzeugen können. Dazu verwenden wir den Linux-Kill-Befehl. Finden Sie zuerst die PID eines Prozesses und senden Sie dann ein Kill-Signal. Lassen Sie uns zum Beispiel den Sleep-Prozess starten und ihn dann mit seiner PID beenden:

$ schlafen 500

$ töten -s SIGTRAP $ ( Griffigkeit schlafen )



Nachdem Sie nun gelernt haben, wie ein Core-Dump generiert wird, können Sie ihn in den folgenden nachfolgenden Abschnitten verwenden.

Wohin gehen sie?

Die Core-Dump-Datei heißt standardmäßig core.pid und wird im Arbeitsverzeichnis der Anwendung erstellt. Hier ist pid die Prozess-ID.

Mit dem Tool ulimit können Sie die Systemressourcenlimits für die aktuelle Shell und alle darauf folgenden Shells abrufen oder ändern. Verwenden Sie den folgenden Befehl, um die Größenbeschränkung für Kerndateien zu überprüfen oder zu konfigurieren:

$ verkleinern -c

Um ein Abgrenzen oder Abschneiden der Core-Datei zu vermeiden, stellen Sie sicher, dass das Limit global auf „unbegrenzt“ [1] steht. Dies kann in /etc/security/limits.conf durch Hinzufügen der folgenden Zeile erfolgen:

root - Kern unbegrenzt

* - Kern unbegrenzt

Melden Sie sich jetzt einfach ab und wieder an, damit die Limits auf Ihre Sitzung angewendet werden.

Anpassen des Speicherorts des Core Dump

Der Befehl „sysctl kernel.core_pattern“ oder „/proc/sys/kernel/core_pattern“ wird normalerweise verwendet, um den Speicherort festzulegen, an dem die Core-Dumps abgelegt werden.

Geben Sie den folgenden Befehl ein, um die Einstellungen für das aktuelle Kernmuster anzuzeigen:

$ Katze / proz / sys / Kernel / Kernmuster

Normalerweise finden Sie hier den Standardwert als „Core“ aufgeführt.

Verwenden von „/proc/sys/kernel/core_pattern“, um den Core-Dump-Speicherort festzulegen

Lassen Sie uns die Core-Dumps vorübergehend an einen neuen Speicherort umleiten, sagen wir /tmp/dumps/core, indem wir die Datei „/proc/sys/kernel/core_pattern“ [2] [3] verwenden. Befolgen Sie nun die folgenden Schritte:

Schritt 1 . Erstellen Sie zunächst ein Verzeichnis zum Speichern der Core-Dumps:

$ mkdir -p / temp / entsorgen / Kerne /

Schritt 2 . Geben Sie diesem Verzeichnis die erforderlichen Berechtigungen:

$ chmod a+x / temp / entsorgen / Kerne /

Schritt 3 . Legen Sie nun vorübergehend den Core-Dump-Pfad fest:

$ Echo '/tmp/dump/cores/core' | sudo Tee / proz / sys / Kernel / Kernmuster

Stellen Sie ulimit erneut global auf unbegrenzt ein.

Hier können wir einige andere Informationen an den Namen der Datei anhängen, wie im Folgenden gezeigt:

$ Echo '/tmp/dump/cores/core_%e.%p_%t' | sudo Tee / proz / sys / Kernel / Kernmuster

Jeder Parameter, der hier verwendet wird, kann wie folgt definiert werden:

% und: Pro ausführbar Datei Name

% p: Pro Prozess Ich würde oder PID.

% t: Pro Hinzufügen eines Zeitstempels

Schritt 4 . Als nächstes müssen wir die Datei „/etc/sysctl.conf“ ändern, um die vorherigen Einstellungen dauerhaft zu übernehmen. Öffnen Sie diese Datei:

$ sudo nano / etc / sysctl.conf

Fügen Sie dieser Datei nun die folgende Zeile hinzu:

Kernel.core_pattern = / temp / entsorgen / Kerne / Ader

Anstelle dieser Zeile können Sie auch Folgendes hinzufügen:

kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

Das ist alles, was wir tun müssen. Generieren Sie nun einen Core-Dump wie im Abschnitt „Generieren eines Core-Dumps“ beschrieben. Danach können wir prüfen, ob unsere Kerndatei generiert wird oder nicht:

$ ls -l / temp / entsorgen / Kerne /

Verwenden des „Sysctl“-Befehls zum Festlegen des Core-Dump-Speicherorts

Wie bereits erwähnt, können wir für denselben Zweck auch den Befehl sysctl verwenden. Ändern wir den Speicherort des Core-Dumps und das Format der Core-Datei:

Schritt 1 . Erstellen Sie ein neues Verzeichnis und geben Sie die erforderlichen Berechtigungen:

$ mkdir -p / temp / meinedumps

$ chmod a+rwx / temp / meinedumps

Schritt 2 . Führen Sie jetzt einfach den folgenden Befehl aus:

$ sudo sysctl -in kernel.core_pattern= / temp / meinedumps / Ader_ % und. % p_ % t

Schritt 3 . Generieren Sie nun erneut den Core-Dump wie zuvor. Überprüfen Sie danach, ob die Kerndatei generiert wird oder nicht:

$ ls -l / temp / meinedumps /

Auf Ubuntu-Systemen werden häufig Core-Dumps an Apport gesendet. Bei Red Hat-basierten Systemen wird es möglicherweise an das Automatic Bug Reporting Tool (ABRT) weitergeleitet. Anfangs hatte ich ein Problem bei der Konfiguration des Core-Dump-Speicherorts, daher musste ich Apport unter Ubuntu 20.04 vollständig deaktivieren. Vielleicht ist dies auch bei Red Hat und anderen der Fall.

Fazit

In diesem Artikel haben wir gesehen, wie wir den Speicherort von Core-Dumps unter Ubuntu 20.04 OS anpassen können. Core-Dumps können Ihnen helfen, herauszufinden, was falsch ist, aber sie sind schrecklich, wenn es darum geht, vertrauliche Daten preiszugeben. Core-Dumps sollten deaktiviert werden, wenn sie nicht benötigt werden, und nur aktiviert werden, wenn es absolut notwendig ist. Bestätigen Sie in einer solchen Situation, dass die Dateien sicher gespeichert sind, sodass normale Benutzer nicht auf die Daten zugreifen können. Unabhängig von Ihrer Entscheidung sollten Sie Ihre Konfiguration außerdem immer testen, um sicherzustellen, dass sie wie beabsichtigt funktioniert.

Core-Dumps und Standardkonfigurationen werden von verschiedenen Betriebssystemen unterschiedlich gehandhabt. In letzter Zeit haben die meisten Linux-Systeme systemd übernommen, was zu einigen geringfügigen Regelanpassungen geführt hat. Je nachdem, wie Ihr System konfiguriert ist, müssen Sie möglicherweise nach Core-Dumps suchen.