proc_pid_maps(5) File Formats Manual proc_pid_maps(5)

/proc/pid/maps - gemappte Speicherbereiche

/proc/PID/maps
Eine Datei mit den derzeit gemappten Speicherbereichen und ihren Zugriffsrechten. Lesen Sie mmap(2) für weitere Informationen über Speicher-Mappings.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
Das Format der Datei lautet:

address           perms offset  dev   inode       pathname
00400000-00452000 r-xp 00000000 08:02 173521      /usr/bin/dbus-daemon
00651000-00652000 r--p 00051000 08:02 173521      /usr/bin/dbus-daemon
00652000-00655000 rw-p 00052000 08:02 173521      /usr/bin/dbus-daemon
00e03000-00e24000 rw-p 00000000 00:00 0           [heap]
00e24000-011f7000 rw-p 00000000 00:00 0           [heap]
…
35b1800000-35b1820000 r-xp 00000000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a20000-35b1a21000 rw-p 00020000 08:02 135522  /usr/lib64/ld-2.15.so
35b1a21000-35b1a22000 rw-p 00000000 00:00 0
35b1c00000-35b1dac000 r-xp 00000000 08:02 135870  /usr/lib64/libc-2.15.so
35b1dac000-35b1fac000 ---p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870  /usr/lib64/libc-2.15.so
35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870  /usr/lib64/libc-2.15.so
…
f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0    [stack:986]
…
7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0   [stack]
7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0   [vdso]

Das Feld address ist der Adressraum im Prozess, das das Mapping belegt. Das Feld perms ist eine Gruppe von Zugriffsrechten.

r = read (lesen)
w = write (schreiben)
x = execute (ausführen)
s = shared (gemeinsam benutzt)
p = private (copy on write) (Kopieren bei Schreibzugriffen)

Das Feld offset ist der Abstand zum Anfang (der Datei oder was auch immer), dev steht für das Gerät (major:minor) und Inode ist der Inode auf diesem Gerät. Ist Inode 0, dann ist keine Datei mit diesem Speicherbereich verbunden, wie z.B. im Falle von BSS (nicht initialisierte Daten).
Das Feld pathname wird normalerweise die Datei sein, die dem Mapping zugrundeliegt. Für ELF-Dateien können Sie dies einfach mit dem Feld offset koordinieren, indem Sie das Feld Offset in den ELF-Programm-Headern (readelf -l) anschauen.
Es gibt zusätzliche, hilfreiche Pseudo-Pfade:
[stack]
Der initiale Stack des Prozesses (auch als Haupt-Thread bekannt).
[stack:TID] (von Linux 3.4 bis Linux 4.4)
Der Stack eines Prozesses (wobei die TID eine Thread-Kennung ist). Er entspricht dem Pfad /proc/PID/task/TID/. Dieses Feld wurde in Linux 4.5 entfernt, da die Bereitstellung dieser Informationen für einen Prozess mit einer großen Anzahl an Threads kostspielig ist.
[vdso]
Das virtuelle dynamisch-gelinkte Laufzeitobjekt. Siehe vdso(7).
[heap]
Der Prozess-Heap.
[anon:Name] (seit Linux 5.17)
Ein benanntes, privates, anonymes Mapping. Mit prctl(2) PR_SET_VMA_ANON_NAME gesetzt.
[anon_shmem:Name] (seit Linux 6.2)
Ein benanntes, gemeinsames, anonymes Mapping. Mit prctl(2) PR_SET_VMA_ANON_NAME gesetzt.
Falls das Feld pathname leer ist, ist dies ein anonymes Mapping, wie es per mmap(2) gewonnen wird. Es gibt keine einfache Möglichkeit, dies zu einer Prozessquelle zurückzukoordinieren, außer es durch gdb(1), strace(1) oder ähnliches auszuführen.
pathname wird desmaskiert angezeigt, außer für Zeilenumbrüche, die durch eine oktale Maskiersequenz ersetzt werden. Daher ist es im Ergebnis nicht möglich zu bestimmen, ob der ursprüngliche Dateiname ein Zeilenumbruchzeichen oder die tatsächliche Zeichensequenz \012 enthielt.
Falls das Mapping Datei-basiert ist und die Datei gelöscht wurde, wird die Zeichenkette » (deleted)« an den Pfadnamen angehängt. Beachten Sie, dass auch dies mehrdeutig ist.
Unter Linux 2.0 gibt es kein Feld, das den Pfadnamen angibt.

proc(5)

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Dr. Tobias Quathamer <toddy@debian.org>, Chris Leick <c.leick@vollbio.de>, Erik Pfannenstein <debianignatz@gmx.de> und 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.

15. Juni 2024 Linux man-pages 6.9.1