coredumpctl - Abfragen und Verarbeiten gespeicherter
Speicherauszüge und Metadaten
ÜBERSICHT
coredumpctl [OPTIONEN…] {BEFEHL}
[PID|PROG|BEF|TREFFER…]
coredumpctl ist ein Werkzeug, das zur Abfrage und
Verarbeitung von durch systemd-coredump(8) gespeicherten
Speicherauszügen und Metadaten verwandt werden kann.
Die folgenden Befehle werden verstanden:
list
Listet im Journal eingesammelte Speicherauszüge
auf, die auf angegebene Charakteristika passen. Falls kein Befehl angegeben
ist, ist dies die implizierte Vorgabe.
Die Ausgabe soll menschenlesbar sein und enthält eine
Tabelle mit den folgenden Spalten:
TIME
Der Zeitstempel des Absturzes, wie vom Kernel
gemeldet.
PID
Die Kennzeichnung des abgestürzten
Prozesses.
UID, GID
Die Benutzer- und Gruppenkennzeichner des
abgestürzten Prozesses.
SIGNAL
Das Signal, das den Prozess zum Absturz brachte, falls
zutreffend.
COREFILE
Informationen, ob der Speicherauszug gespeichert wurde
und ob er noch zugreifbar ist: »none« bedeutet, dass der
Speicherauszug nicht gespeichert wurde, »-« bedeutet, dass er
nicht verfügbar war (weil der Prozess beispielsweise nicht durch ein
Signal beendet wurde), »present« bedeutet, dass der aktuelle
Benutzer auf den Speicherauszug zugreifen kann, »journal«
bedeutet, dass der Speicherauszug im »journal« gespeichert
wurde, »truncated« ist das gleiche wie die vorherigen zwei, aber
der Speicherauszug war zu groß und wurde nicht als Ganzes gespeichert,
»error« bedeutet, dass auf die Speicherauszugsdatei nicht
zugegriffen werden kann, wahrscheinlich aufgrund nicht ausreichender Rechte
und »missing« bedeutet, dass der Speicherauszug in einer Datei
gespeichert wurde, aber die Datei wurde danach entfernt.
EXE
Der komplette Pfad zum Programm. Für Backtraces
von Skripten ist dies der Name des Interpreters.
Es ist gut zu wissen, dass verschiedene Beschränkungen
für Daten, die im Journal gespeichert werden und für
Speicherauszüge, die in /var/lib/systemd/coredump abgelegt sind,
gelten. Lesen Sie den Überblick in systemd-coredump(8). Daher
ist es gut möglich, dass ein bestimmter Speicherauszug noch im
Journal aufgeführt ist, obwohl die entsprechende Speicherauszugsdatei
bereits entfernt wurde.
info
Zeigt detaillierte Informationen über den neusten
Speicherauszug an, der auf die angegebenen Charakteristika passt und im
Journal gesammelt wurde.
dump
Extrahiert den neusten Speicherauszug, der auf die
angegebenen Charakteristika passt. Der Speicherauszug wird auf die
Standardausgabe geschrieben, außer eine Ausgabedatei wurde mit
--output= angegeben.
debug
Ruft einen Debugger auf den neusten Speicherauszug auf,
der auf die angegebenen Charakteristika passt. Standardmäßig
wird
gdb(1) verwandt. Dies kann mittels der Option
--debugger=
oder der Umgebungsvariable
$SYSTEMD_DEBUGGER geändert werden.
Verwenden Sie die Option
--debugger-arguments=, um zusätzliche
Befehlszeilenargumente an den Debugger zu übergeben.
Die folgenden Optionen werden verstanden:
-h, --help
Zeigt einen kurzen Hilfetext an und beendet das
Programm.
--version
Zeigt eine kurze Versionszeichenkette an und beendet das
Programm.
--no-pager
Leitet die Ausgabe nicht an ein Textanzeigeprogramm
weiter.
--no-legend
Gibt die Legende nicht aus, d.h. die Spaltenköpfe
und die Fußzeile mit Hinweisen.
--json=MODUS
Zeigt die Ausgabe als JSON formatiert. Erwartet entweder
»short« (für die kürzest mögliche Ausgabe
ohne unnötigen Leerraum oder Zeilenumbrüche),
»pretty« (für eine schönere Version der gleichen
Ausgabe, mit Einzügen und Zeilenumbrüchen) oder
»off« (um die standardmäßig aktivierte
JSON-Ausgabe auszuschalten).
-1
Nur Informationen über den neusten Speicherauszug
anzeigen, statt alle bekannten Speicherauszüge aufzulisten.
Äquivalent zu --reverse -n 1.
-n ANZ
Höchstens die angegebene Anzahl von
Einträgen anzeigen. Der angegebene Parameter muss eine Ganzzahl
größer oder gleich 1 sein.
-S, --since
Gibt nur Einträge seit dem angegebenen Datum
aus.
-U, --until
Gibt nur Einträge bis zu dem angegebenen Datum
aus.
-r, --reverse
Invertiert die Ausgabe, so dass die neusten
Einträge zuerst dargestellt werden.
-F FELD, --field=FELD
Gibt alle möglichen Datenwerte aus, die das
angegebene Feld beim Abgleich von Speicherauszugseinträgen im Journal
akzeptiert.
-o DATEI, --output=DATEI
Schreibt den Speicherauszug nach DATEI.
--debugger=DEBUGGER
Verwendet den angegebenen Debugger für den Befehl
debug. Falls nicht übergeben und
$SYSTEMD_DEBUGGER nicht
gesetzt ist, dann wird
gdb(1) verwandt.
-A ARG, --debugger-arguments=ARG
Die angegebene ARG als zusätzliche
Befehlszeilenargumente an den Debugger übergeben. Wenn ARG
Leerraumzeichen enthält, müssen Sie geeignet englische
Anführungszeichen verwenden. (Siehe Beispiele.)
--file=GLOB
Akzeptiert einen Datei-Glob als Argument. Falls
angegeben, wird Coredumpctl auf den auf GLOB passenden Journal-Dateien
statt den vorgegebenen Laufzeit- und System-Journal-Pfaden arbeiten. Kann
mehrfach angegeben werden, dann werden Dateien geeignet verschachtelt.
-D VERZ, --directory=VERZ
Verwendet die Journal-Datei im angegebenen
VERZ.
--root=WURZEL
Verwendet das Wurzelverzeichnis WURZEL beim Suchen
nach Speicherauszügen.
--image=Abbild
Akzeptiert einen Pfad zu einer Plattenabbilddatei oder
einem Blockgerätenamen. Falls angegeben, werden alle Aktionen auf das
Dateisystem in dem angegebenen Plattenabbild angewandt. Diese Option ist
ähnlich zu
--root=, agiert aber auf Dateisystemen, die in
Plattenabbildern oder Blockgeräten gespeichert sind. Das Plattenabbild
sollte entweder nur ein Dateisystem oder eine Reihe von Dateisystemen
innerhalb einer GPT-Partitionstabelle enthalten, die der
Spezifikation
für auffindbare Partitionen[1] folgt. Für weitere
Informationen über unterstützte Plattenabbilder, siehe den
Schalter von
systemd-nspawn(1) mit dem gleichen Namen.
-q, --quiet
Unterdrückt informelle Meldungen über
fehlenden Zugriff auf Journaldateien und möglicherweise gerade
ablaufende Speicherauszüge.
--all
Schaut in alle verfügbaren Journal-Dateien in
/var/log/journal/ (ohne Journal-Namensräume), statt nur in lokale
Dateien.
ÜBEREINSTIMMUNG
Eine Übereinstimmung kann Folgendes sein:
PID
Prozesskennung des Prozesses, der den Speicherauszug
erzeugte. Eine Ganzzahl.
PROG
Name des Programms (passt auf COREDUMP_COMM=).
Darf keinen Schrägstrich enthalten.
BEF
Pfad zu dem Programm (passt auf COREDUMP_EXE=).
Muss mindestens einen Schrägstrich enthalten.
TREFFER
Allgemeiner-Journalctl-Treffer-Filter, muss ein
Gleichheitszeichen (»=«) enthalten. Siehe
journalctl(1).
Im Erfolgsfall wird 0 zurückgeliefert; andernfalls wird ein
von Null verschiedener Fehler-Code zurückgeliefert. Werden keine
passenden Speicherauszüge gefunden, wird dies als Fehler
betrachtet.
$SYSTEMD_DEBUGGER
Verwendet den übergebenen Debugger für den
Befehl debug. Siehe die Option --debugger=.
Beispiel 1. Alle Speicherauszüge eines
Programms auflisten
$ coredumpctl list /lib64/firefox/firefox
TIME PID UID GID SIG COREFILE EXE SIZE
Tue … 8018 1000 1000 SIGSEGV missing /lib64/firefox/firefox -
Wed … 251609 1000 1000 SIGTRAP missing /lib64/firefox/firefox -
Fri … 552351 1000 1000 SIGSEGV present /lib64/firefox/firefox 28.7M
Das Journal hat drei Einträge, die sich auf
/lib64/firefox/firefox beziehen und nur beim letzten Eintrag ist eine
Speicherauszugsdatei (in externem Speicher auf Platte) verfügbar.
Beachten Sie, dass coredumpctl Zugriff auf die Journal-Dateien
haben muss, um die relevanten Einträge aus dem Journal herauszuholen.
Daher wird ein nicht privilegierter Benutzer normalerweise nur die
Informationen über abstürzende Programme dieses Benutzers
sehen.
Beispiel 2. Gdb auf den letzten Speicherauszug
anwenden
Beispiel 3. Gdb verwenden, um die
vollständigen Registerinformationen des letzten Speicherauszugs
anzuzeigen
$ coredumpctl debug --debugger-arguments="-batch -ex 'info all-registers'"
Beispiel 4. Informationen über den
Speicherauszug basierend auf der PID anzeigen
$ coredumpctl info 6654
PID: 6654 (bash)
UID: 1000 (user)
GID: 1000 (user)
Signal: 11 (SEGV)
Timestamp: Mon 2021-01-01 00:00:01 CET (20s ago)
Command Line: bash -c $'kill -SEGV $$'
Executable: /usr/bin/bash
Control Group: /user.slice/user-1000.slice/…
Unit: user@1000.service
User Unit: vte-spawn-….scope
Slice: user-1000.slice
Owner UID: 1000 (user)
Boot ID: …
Machine ID: …
Hostname: …
Storage: /var/lib/systemd/coredump/core.bash.1000.….zst (present)
Size on Disk: 51.7K
Message: Process 130414 (bash) of user 1000 dumped core.
Stack trace of thread 130414:
#0 0x00007f398142358b kill (libc.so.6 + 0x3d58b)
#1 0x0000558c2c7fda09 kill_builtin (bash + 0xb1a09)
#2 0x0000558c2c79dc59 execute_builtin.lto_priv.0 (bash + 0x51c59)
#3 0x0000558c2c79709c execute_simple_command (bash + 0x4b09c)
#4 0x0000558c2c798408 execute_command_internal (bash + 0x4c408)
#5 0x0000558c2c7f6bdc parse_and_execute (bash + 0xaabdc)
#6 0x0000558c2c85415c run_one_command.isra.0 (bash + 0x10815c)
#7 0x0000558c2c77d040 main (bash + 0x31040)
#8 0x00007f398140db75 __libc_start_main (libc.so.6 + 0x27b75)
#9 0x0000558c2c77dd1e _start (bash + 0x31d1e)
Beispiel 5. Den neusten Speicherauszug aus
/usr/bin/bar in eine Datei namens bar.coredump extrahieren
$ coredumpctl -o bar.coredump dump /usr/bin/bar
- 1.
- Spezifikation für auffindbare Partitionen
https://systemd.io/DISCOVERABLE_PARTITIONS
Ü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 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.