GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-pmap-Befehls-Tutorial für Anfänger (5 Beispiele)

Die Linux-Befehlszeile bietet viele Tools, mit denen Sie mehr über Prozesse erfahren, die derzeit in Ihrem System aktiv sind. Ein solches Dienstprogramm ist pmap, das die Speicherzuordnung des Prozesses meldet. In diesem Tutorial werden wir die Grundlagen von pmap anhand einiger leicht verständlicher Beispiele besprechen.

Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele hier auf einem Ubuntu 20.04 LTS-Rechner getestet wurden.

Linux-pmap-Befehl

Mit dem Befehl pmap in Linux können Sie die Speicherzuordnung eines oder mehrerer Prozesse anzeigen. Es folgt die Syntax:

pmap [Optionen] PID [...]

Und so erklärt es die Manpage des Tools:

Der pmap-Befehl zeigt die Speicherabbildung eines Prozesses oder von Prozessen an.

Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine noch bessere Vorstellung davon vermitteln sollen, wie der Befehl pmap funktioniert.

Q1. Wie benutzt man pmap?

Die grundlegende Verwendung ist einfach. Führen Sie einfach den Befehl „pmap“ ohne Option aus. Natürlich müssen Sie eine Prozess-PID als Eingabe übergeben.

Zum Beispiel habe ich pmap folgendermaßen verwendet:

pmap 5146

Und hier ist ein Teil der produzierten Ausgabe:

 5146:Gedit 
000055bde4835000 8K R-X-- Gedit
000055bde4a36000 4K R ---- anon]
00007FC910000000 132K RW --- [anon]
00007FC910021000 65404K ----- [anon]
00007FC9180000000000000000000000000000000000000000 000M-00007FC9180. ---   [ anon ]
00007fc91c750000    204K r---- UbuntuMono-R.ttf
00007fc91c783000    644K r-x-- libaspell.so.15.2.0
00007fc91c8 ---- libaspell.   204K .so.15.2.0
00007fc91ca24000     20K r---- libaspell.so.15.2.0
00007fc91ca29000      4K rw--- libaspell.so.15.2.0
00007fc91ca2a000   --x libenchant_aspell.so
00007FC91CA2C000 2044K ------ libenchant_aspell.so
00007fc91cc2b000 4k r ---- libenchant_aspell.so
00007FC91CC2C000 4K000 4K000 4K000 4K000 4K000 4K000 4K000 4K000 4K000 4K000 4KWANGE--F. r-x-- libenchant_hspell.so
00007fc91cc38000   2044K ----- libenchant_hspell.so 00007FC91CE37000 4K R ---- libenchant_hspell.so
00007FC91CE38000 12K RW --- libenchant_hspell.so
00007fc911b000 428K R-X- ----- libhunspell-1.6.so.0.0.1
00007fc91d0a5000      4K r---- libhunspell-1.6.so.0.0.1
00007fc91d0a6000     16K rw--- libhunspell-1.6.so. 0.0.1
00007fc91d0aa000     16K r-x-- libenchant_myspell.so
00007fc91d0ae000   2048K ----- libenchant_myspell.so
00007fc91d2ae000      4K r----
...
...

Also los geht's, die Ausgabe zeigt Ihnen zuerst den Namen des Prozesses und dann folgt die Memory Map.

Q2. Wie kann pmap erweiterte Ausgabe anzeigen?

Um pmap dazu zu bringen, die Ausgabe im erweiterten Format anzuzeigen, verwenden Sie die Befehlszeilenoption -x. Zum Beispiel:

pmap -x 5146

Das Folgende ist ein Teil der erzeugten Ausgabe:

 5146:Gedit 
Adresse KBYTES RSS DIRECTE MODE MAPPING
0000555BDE4835000 8 4 0 R-X-- GEDIT
0000555BDE4835000 0 0 R-X-GEDIT
0000555BDE4A36000 4 4 4 R- --- gedit
000055bde4a36000 0 0 0 r ---- gedit
000055bde4a37000 4 4 4 --- rw gedit
000055bde4a37000 0 0 0 --- rw gedit
000055bde5d32000 13944 13692 13692 RW --- [Anon]
000055bde5d32000 0 0 0 RW --- [Anon]
00007FC910000000 132 44 44 RW --- [Anon]
00007FC910000000 0 0 0 0 RW --- -[anon]
00007fc910021000 65404 0 0 ----- [anon]
00007fc910021000 0 0 0 ----- [anon]
0000007fc918000000 896 896 896 rw --- [anon ]
00007fc918000000       0       0       0 rw---   [ anon ]
00007fc9180e0000   64640       0       0 -----   [ anon ]
0 0007fc9180e0000 0 0 0 ----- [anon]
00007fc91c750000 204 136 0 r ---- Ubuntumono-r.ttf
0000007fc91c750000 0 0 r ---- Ubuntumono-r.ttf
00007FC91C783000 644 472 0 R-X-- Libaspell.SO.15.2.0
00007fc91c783000 0 0 R-X-- libaspell.so.15.2.0
00007FC91C824000 2048 0 ------------ .15.2.0
00007FC91C824000 0 0 0 ----- libaspell.SO.15.2.0
00007FC91CA24000 20 20 20 R ---- libaspell.so.15.2.0
00007fc91ca24000 0 0 0 0 r ---- libaspell.so.15.2.0
00007fc91ca29000 4 4 4 rw --- libaspell.so.15.2.0
00007fc91ca29000 0 0 0 rw ---- libaspell.so.15.29000 .0
00007fc91ca2a000 8 8 0 r-x-- libenchant_aspell.so
00007fc91ca2a000 0 0 r-x-- libenchant_aspell.so
00007fc91ca2c000 2044 0-libenchant_aspell.so 00007 fc91ca2c000 0 0 0 ----- libenchant_aspell.so
00007fc91cc2b000 4 4 r ---- libenchant_aspell.so
00007fc91cc2b000 0 0 r ---- libenchant_aspell.so
.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .
...
...

Beachten Sie, dass Sie, wenn Sie noch mehr Details benötigen, die Befehlszeilenoption -X verwenden können.

Q3. Wie kann man pmap dazu bringen, das Geräteformat in der Ausgabe anzuzeigen?

Dies kann mit der Befehlszeilenoption -d erfolgen. Zum Beispiel:

pmap -d 5146

Und hier ist ein Teil der erzeugten Ausgabe:

 5146:Gedit 
Adresskbytes-Modus-Offset-Geräte-Mapping
0000555BDE4835000 8 R-X-00000000000000 008:00008 GEDIT
0000555BDE4A36000 4 R --- 00000000001000 008:00008 00008:00008 00008:00008 00008:00008 00008:00008 00008:00008 00008:00008 00008:00008 00008:00008 00008:00008 000055BDE4A37000 4 RW --- 0000000000002000 008:00008 GEDIT
0000555BDE5D32000 13944 RW --- 000000000000000000 000:0000000000000000000000000000 132 RW-00000000000000 00000 000:0000 000:0000 000:0000 000 0000000 0000000000 132 rw- 65404 ----- 000000000000000000 000:00000 [anon]
00007fc918000000 896 RW --- 00000000000000 000:00000 [anon]
00007FC91800000000000000000 000 [anon] 00007FC91C750000 204 R ---- 000000000000000000 008:00008 UBUNTUMONO-R.TTF
00007FC91C783000 644 R-X-- 000000000000000000 008:0000008.lebaspaspaspell.So.So.SO.15.2.2.2. 008:00008 libaspell.so.15.2.0
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007FC91CA29000 4 RW --- 00000000000A6000 008:00008 libaspell.SO.15.2.0
00007FC91CA2A000 8 R-X-0000000000000000 0000:00008 LIBENCH-FRAHNEGASPELL.SOSPELL. .SO
00007FC91CC2B000 4 R ---- 0000000000001000 008:00008 libenchant_aspell libenchant_hspell.so
00007FC91CC38000 2044 ------ 000000000000B000 008:00008 libenchant_hspell.so
0000007FC91CE37000 4 R ---- 00000000000000000000A000 008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008:00008 00008 008:00008 libenchant_hspell.so
...
...
...

Sie können also sehen, dass in der Ausgabe eine neue Spalte „Gerät“ hinzugefügt wurde.

Q4. Wie entferne ich die pmap-Ausgabe von Kopf- und Fußzeilen?

Wenn Sie Dinge wie Spaltennamen in der pmap-Ausgabe nicht sehen möchten, können Sie die Befehlszeilenoption -q verwenden.

Zum Beispiel:

pmap -q -d 5146

Es folgte die Ausgabe:

 5146:gedit 
000055bde4835000 8R-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 4R ---- 0 Millionen Milliarden tausend 008:00008 gedit
000055bde4a37000 4 rw --- 0000000000002000 008:00008 GEDIT
000055BDE5D32000 13944 RW --- 0000000000000000 000:00000 [ANON]
00007FC910000000 132 RW --- 0000000000000000 000:00000 [ANON]
0000007fc910021000 65040404040404040404040404040404040404040404040404040404. [Anon]
00007fc918000000 896 rw --- 0000000000000000 000:00000 [Anon]
00007fc9180e0000 64640 ----- 0000000000000000 000:00000 [Anon]
00007fc91c750000 204 R ---- 0000000000000000 008:00008 Ubuntumono-r.ttf
00007FC91C783000 644 R-X-000000000000 008:000088 libaspell
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000       4 rw--- 00000000000a6000 008 :00000a6000 008 .15.2.0
00007FC91CA2A000 8 R-X-- 0000000000000000 008:00008 libenchant_aspell 008:00008 libenchant_aspell.so
00007FC91CC2C000 4 RW --- 00000000002000 008:00008 libenchant_aspell 0000000000b000 008:00008 libenchant_hspell

So können Sie sehen, dass der Header aus der Ausgabe entfernt wurde.

Q5. Wie kann man pmap dazu bringen, vollständige Pfade in der Ausgabe anzuzeigen?

Falls Sie möchten, dass pmap den vollständigen Pfad zu den Dateien in der Mapping-Spalte anzeigt, können Sie die Befehlszeilenoption -p verwenden.

Zum Beispiel:

pmap -p 5146

Und hier ist die Ausgabe dieses Befehls:

5146:   gedit
000055bde4835000      8K r-x-- /usr/bin/gedit
000055bde4a36000      4K r---- /usr/bin/gedit
000055bde4a37000      -4K rw--- / bin / gedit
000055bde5d32000 13944K rw --- [Anon]
00007fc910000000 132K rw --- [Anon]
00007fc910021000 65404K ----- [Anon]
00007fc918000000 896K rw---   [ anon ]
00007fc9180e0000  64640K -----   [ anon ]
00007fc91c750000    204K r---- /usr/share/fonts/truetype/ubuntu/UbuntuMono-R.ttf
00007fc91c783000    644K r-x-- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91c824000   2048K ----- /usr/lib/x86_64-linux-gnu/libaspell.so .15.2.0
00007fc91ca24000     20K r---- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91ca29000      4K rw--- /usr/lib/x86_64- linux-gnu/libaspell.so.15.2.0
00007fc91ca2a000      8K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91ca2c000   2044K ----- /usr/ lib/x86_64-linux-gnu/enchant/libenchant_aspell. so
00007fc91cc2b000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91cc2c000      4K rw--- /usr/lib/x86_64-linux-gnu/enchant /libenchant_aspell.so
00007fc91cc2d000     44K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91cc38000   2044K ----- /usr/lib/x86_64-linux-gnu /enchant/libenchant_hspell.so
00007fc91ce37000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91ce38000     12K rw--- /usr/x86_64-lib/x86_64- linux-gnu/enchant/libenchant_hspell.so
00007fc91ce3b000    428K r-x-- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91cea6000   2044K ----- / usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0a5000      4K r---- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0a6000     16K rw--- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0aa000     16K r-x-- /usr/lib/x86_64-linux-gnu/ enchant/libenchant_myspell.so
00007f c91d0ae000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2ae000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2af000      4K rw--- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2b0000     44K r-x-- /usr/lib/x86_64-linux-gnu/enchant_ispell.libenchant.so so
00007fc91d2bb000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so

Sie können also sehen, dass Dateinamen mit vollständigen Pfaden in der Ausgabe erzeugt werden.

Schlussfolgerung

Wenn Ihre Arbeit den Umgang mit Prozessspeicherkarten beinhaltet, ist dieses Tool genau das Richtige für Sie. In diesem Tutorial haben wir die grundlegende Verwendung dieses Befehls beschrieben. Wenn Sie alles, was wir hier besprochen haben, geübt haben, besuchen Sie die Manpage des Tools, um mehr darüber zu erfahren.


Linux
  1. Linux-CD-Befehls-Tutorial für Anfänger (8 Beispiele)

  2. Linux-Kommando-Tutorial für Anfänger (5 Beispiele)

  3. Linux-df-Befehls-Tutorial für Anfänger (8 Beispiele)

  4. Linux Date Command Tutorial für Anfänger (8 Beispiele)

  5. Linux-Hostname-Befehls-Tutorial für Anfänger (5 Beispiele)

Linux Who Command Tutorial für Anfänger (8 Beispiele)

Linux nl Command Tutorial für Anfänger (7 Beispiele)

Linux-nm-Befehls-Tutorial für Anfänger (10 Beispiele)

Linux OD Command Tutorial für Anfänger (6 Beispiele)

Linux w Command Tutorial für Anfänger (5 Beispiele)

Linux ss Command Tutorial für Anfänger (8 Beispiele)