Was ist "Core Dump" unter Linux?
Wenn ein Prozess unerwartet ausgeht, hinterlässt er häufig einen „Kern -Müllkippe“ in Ihrem System. Es gibt eine relevante Nachricht, die damit enthalten ist. Ein Kern dient als Debugging -Tool und ist ein Gedächtnisbild, das auch die Debugging -Informationen enthält. Wenn Sie ein Benutzer sind, der kein Programm debuggen möchte, löschen Sie möglicherweise den Kern:
$ rm Core
Sie können es auch unberührt lassen, da der alte Kern überschrieben wird, wenn ein neuer jemals abgeladen wird. Sie können auch das Kerndumping mit dem folgenden Befehl deaktivieren:
$ ulimit -c 0
Wir können die Kernmülldeponien bei Bedarf (z. B. über einen Debugger) generieren oder sie können nach Beendigung automatisch erstellt werden. Der Kernel initiiert als Folge des abrupten Ausstiegs eines Programms Kernmüllkopien. Diese können an ein anderes Programm (z. B. Systemd-Coredump) für zusätzliche Operationen gesendet werden.
Wie in der Regel besteht ein Kompromiss zwischen dem Sammeln der Daten für eine bessere Stabilität und Fehlerbehebung und das Risiko, die sensiblen Informationen aus Debug-Daten zu enthüllen.
Was werden wir abdecken??
In diesem Artikel werden wir sehen.04 os. Fangen wir jetzt an.
Erzeugen Sie einen Kern -Müllkippe
Lassen Sie uns zunächst sehen, wie wir einen Kern -Müllkippe generieren können. Dafür verwenden wir den Befehl Linux Kill. Finden Sie zuerst die PID eines Prozesses und senden Sie dann ein Kill -Signal. Beginnen wir zum Beispiel den Schlafprozess und töten Sie ihn dann mit seiner PID:
$ Sleep 500
$ Kill -S Sigtrap $ (PGREP Sleep)
Nachdem Sie gelernt haben, wie man einen Kern -Mülldeponie generiert, können Sie ihn in den folgenden folgenden Abschnitten verwenden.
Wohin gehen sie?
Die Kerndarmdatei wird als Kern bezeichnet.PID standardmäßig und wird im Arbeitsverzeichnis der Anwendung erstellt. Hier ist PID die Prozess -ID.
Mit dem Ulimit -Tool können Sie die Systemressourcenlimits für die aktuelle Hülle und alle danach vorliegenden Shells erhalten oder ändern. Verwenden Sie den folgenden Befehl, um die Größenbeschränkung der Kerndatei zu überprüfen oder zu konfigurieren:
$ ulimit -c
Um die Kerndatei abzugrenzen oder abzuschneiden, stellen Sie sicher, dass die Grenze weltweit auf „unbegrenzt“ eingestellt ist [1]. Dies kann in/etc/Sicherheit/Grenzen erfolgen.Conf durch Hinzufügen der folgenden Zeile:
Root - Core Unlimited
* - Core Unlimited
Melden Sie sich jetzt einfach an und melden Sie sich wieder an, damit die Grenzen auf Ihre Sitzung angewendet werden sollen.
Anpassen des Standorts des Kernmülls
Der „Sysctl -Kernel.core_pattern ”oder der Befehl„/proc/sys/kernel/core_pattern “wird normalerweise verwendet, um den Speicherort festzulegen, an dem die Kernmumpen gehen.
Geben Sie den folgenden Befehl ein, um die Einstellungen für das aktuelle Kernmuster anzuzeigen:
$ cat/proc/sys/kernel/core_pattern
Normalerweise finden Sie den Standardwert, der hier als „Kern“ aufgeführt ist.
Verwenden Sie „/proc/sys/kernel/core_pattern“, um den Core -Dump -Speicherort festzulegen
Lassen Sie uns die Kern -Dumps vorübergehend an einen neuen Ort umleiten, sagen wir/TMP/Dumps/Core unter Verwendung der Datei "/proc/sys/kernel/core_pattern" [2] [3]. Befolgen Sie nun die folgenden Schritte:
Schritt 1. Machen Sie zunächst ein Verzeichnis, um die Kernmüllhalden zu speichern:
$ mkdir -p/tmp/dump/cores/
Schritt 2. Geben Sie diesem Verzeichnis die erforderlichen Berechtigungen:
$ chmod a+x/tmp/dump/cores/
Schritt 3. Stellen Sie nun den Core Dump -Pfad vorübergehend fest:
$ echo '/tmp/Dump/Cores/Core' | sudo tee/proc/sys/kernel/core_pattern
Setzen Sie die Ulimit erneut weltweit unbegrenzt auf.
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/proc/sys/kernel/core_pattern
Jeder hier verwendete Parameter kann wie folgt definiert werden:
%e: Für ausführbare Dateiname
%P: Für Prozess -ID oder PID.
%t: Zum Hinzufügen eines Zeitstempels
Schritt 4. Als nächstes müssen wir das „/etc/sysctl ändern.conf ”Datei, um die vorherigen Einstellungen dauerhaft anzuwenden. Öffnen Sie diese Datei:
$ sudo nano /etc /sysctl.Conf
Fügen Sie nun dieser Datei die folgende Zeile hinzu:
Kernel.core_pattern =/tmp/Dump/Cores/Core
Anstelle dieser Zeile können Sie auch dazu hinzufügen:
Kernel.core_pattern = '/tmp/Dump/cores/core_%e.%p_%t '
Das ist alles, was wir tun müssen. Generieren Sie nun einen Kerngegner, wie im Abschnitt "Ein Kerndeponierung generieren" erwähnt. Danach können wir überprüfen, ob unsere Kerndatei generiert wird oder nicht:
$ ls -l/tmp/dump/cores/
Verwenden Sie den Befehl „sysctl“, um den Core -Dump -Speicherort festzulegen
Wie bereits erwähnt, können wir auch den SYSCTL -Befehl für denselben Zweck verwenden. Ändern wir den Core -Dump -Speicherort und das Format der Kerndatei:
Schritt 1. Erstellen Sie ein neues Verzeichnis und geben Sie die erforderlichen Berechtigungen an:
$ mkdir -p /tmp /mydumps
$ chmod a+rwx /tmp /mydumps
Schritt 2. Führen Sie nun einfach den folgenden Befehl aus:
$ sudo sysctl -w Kernel.core_pattern =/tmp/mydumps/core_%e.%p_%t
Schritt 3. Erzeugen Sie jetzt wieder den Kernmüll wie früher. Überprüfen Sie danach, ob die Kerndatei generiert wird oder nicht:
$ ls -l/tmp/mydumps/
Auf Ubuntu -Systemen werden häufig Kernmumpen an Apport gesendet. Für Red Hat-basierte Systeme kann es an das automatische Fehlerberichterstattungstool (ABRT) weitergeleitet werden. Anfang.04. Vielleicht kann dies auch bei Red Hat und anderen der Fall sein.
Abschluss
In diesem Artikel haben wir gesehen.04 os. Kern -Müllkopien können Ihnen helfen. Kerngegner sollten deaktiviert werden, wenn sie nicht erforderlich sind und nur bei Bedarf aktiviert sind. Stellen Sie in einer solchen Situation sicher, dass die Dateien sicher gespeichert sind, damit die normalen Benutzer nicht auf die Daten zugreifen können. Darüber hinaus sollten Sie unabhängig von Ihrer Entscheidung Ihre Konfiguration immer testen, um sicherzustellen, dass sie wie beabsichtigt funktioniert.
Kerngefälle und Standardkonfigurationen werden von verschiedenen Betriebssystemen unterschiedlich behandelt. In jüngster Zeit haben die meisten Linux -Systeme Systemd übernommen, was einige geringfügige Regelanpassungen bewirkt hat. Je nachdem, wie Ihr System konfiguriert ist.