SYSTEMD-COREDUMP(8)

BEZEICHNUNG
systemd-coredump, systemd-coredump.socket, systemd-coredump@.service - Erlangen, Speichern und Verarbeiten von Speicherauszügen

ÜBERSICHT

/usr/lib/systemd/systemd-coredump

/usr/lib/systemd/systemd-coredump --backtrace

systemd-coredump@.service

systemd-coredump.socket

BESCHREIBUNG

systemd-coredump@.service ist ein Systemdienst, der Speicherauszüge vom Kernel erlangen und sie auf verschiedene Arten bearbeiten kann. Das Programm systemd-coredump erledigt die eigentliche Arbeit. Es wird zweimal aufgerufen: einmal als Handhabungsprogramm durch den Kernel und das zweite Mal in systemd-coredump@.service, um die Daten tatsächlich ins Journal zu schreiben.

Wenn der Kernel systemd-coredump aufruft, um den Speicherauszug zu handhaben, läuft es im privilegierten Modus und wird sich mit dem durch die Unit systemd-coredump.socket erstellten Socket verbinden, die wiederum eine nicht privilegierte systemd-coredump@.service-Instanz erzeugen wird, um den Speicherauzug zu verarbeiten. Daher sind systemd-coredump.socket und systemd-coredump@.service Hilfs-Units, die die eigentliche Verarbeitung von Speicherauszügen vornehmen und der normalen Diensteverwaltung unterliegen.

Speicherauszüge können in das Journal geschrieben oder als Datei gespeichert werden. Sobald sie gespeichert wurden, können sie für weitere Verarbeitungen, beispielsweise in gdb(1), abgefragt werden.

Standardmäßig protokolliert systemd-coredump die Speicherauszüge, einschließlich, falls möglich, der Ablaufverfolgung (Backtrace) in das Journal und speichert den Speicherauszug selbst in eine externe Datei in /var/lib/systemd/coredump.

Das Verhalten eines bestimmten Programms beim Empfang eines Signal wird durch zwei Faktoren geregelt, die in core(5) im Detail beschrieben sind. Insbesondere werden Speicherauszüge nur verarbeitet, wenn die zugehörigen Ressourcenbegrenzungen ausreichend sind.

Es ist auch möglich, systemd-coredump mit der Option --backtrace aufzurufen. In diesem Fall erwartet systemd-coredump auf der Standardeingabe einen Journaleintrag im Journal-Exportformat[1]. Der Eintrag sollte ein MESSAGE=-Feld und sämtliche zusätzliche Metadatenfelder, die der Aufrufende vernünftigerweise erwarten würde, enthalten. systemd-coredump hängt zusätzliche Metadatenfelder auf die gleiche Art an, wie es das für vom Kernel empfangene Speicherauszüge auch macht. In diesem Modus werden keine Speicherauszüge im Journal gespeichert.

KONFIGURATION

Für von systemd gestartete Programme können Prozessressourcenbegrenzungen mit der Direktive LimitCORE= eingerichtet werden, siehe systemd.exec(5).

Um vom Kernel für den Umgang mit Speicherauszügen eingesetzt zu werden, muss systemd-coredump im Parameter kernel.core_pattern von sysctl(8) konfiguriert sein. Die Syntax dieses Parameters wird in core(5) erklärt. Systemd installiert die Datei /usr/lib/sysctl.d/50-coredump.conf, die kernel.core_pattern entsprechend konfiguriert. Diese Datei kann gemäß normaler sysctl.d(5)-Regeln maskiert oder außer Kraft gesetzt werden, um eine andere Einstellung zu verwenden. Falls die Sysctl-Konfiguration verändert wird, muss diese im Kernel aktualisiert werden, bevor sie wirksam wird, siehe sysctl(8) und systemd-sysctl(8).

Um im Modus --backtrace eingesetzt zu werden, muss ein geeignetes Backtrace-Handhabungsprogramm auf der Senderseite installiert sein. Im Falle von python(1) bedeutet dies beispielsweise, dass ein sys.excepthook installiert sein muss, siehe systemd-coredump-python[2].

Das Verhalten von systemd-coredump selbst wird mittels der Konfigurationsdatei /etc/systemd/coredump.conf und entsprechenden Schnippseln in /etc/systemd/coredump.conf.d/*.conf konfiguriert, siehe coredump.conf(5). Eine neue Instanz von systemd-coredump wird nach jedem Empfang eines Speicherauszuges aufgerufen. Daher werden Änderungen in diesen Dateien wirksam, wenn das nächste Mal ein Speicherauszug empfangen wird.

Die von Speicherauszügen verwandten Ressourcen werden auf zwei Arten begrenzt. Parameter wie die maximale Größe empfangener Speicherauszüge und Dateien können in den oben erwähnten Dateien /etc/systemd/coredump.conf und Schnippseln geändert werden. Zusätzlich wird die Speicherdauer von Speicherauszügen durch systemd-tmpfiles beschränkt, entsprechende Einstellungen sind standardmäßig in /usr/lib/tmpfiles.d/systemd.conf.

  Deaktivierung der Verarbeitung von Speicherauszügen

Um die möglicherweise ressourcenintensive Verarbeitung durch systemd-coredump zu deaktivieren, setzen Sie

    Storage=none
    ProcessSizeMax=0

in coredump.conf(5).

VERWENDUNG

Im Journal gespeicherte Daten können wie gewöhnlich mit journalctl(1) betrachtet werden. coredumpctl(1) kann zur Abfrage gespeicherter Speicherauszüge, unabhängig von ihrem Ort, zur Anzeige von Informationen und zur Verarbeitung z.B. durch Weitergabe an den GNU-Debugger (gdb) verwandt werden.

SIEHE AUCH

coredump.conf(5), coredumpctl(1), systemd-journald.service(8), systemd-tmpfiles(8), core(5), sysctl.d(5), systemd-sysctl.service(8).

ANMERKUNGEN

1.  Journal-Exportformat
    https://www.freedesktop.org/wiki/Software/systemd/export

2.  systemd-coredump-python
    https://github.com/keszybz/systemd-coredump-python

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).