La ligne de commande Linux propose de nombreux outils qui vous aident à en savoir plus sur les processus actuellement actifs sur votre système. L'un de ces utilitaires est pmap, qui signale la carte mémoire du processus. Dans ce didacticiel, nous aborderons les bases de pmap à l'aide d'exemples faciles à comprendre.
Mais avant cela, il convient de mentionner que tous les exemples ici ont été testés sur une machine Ubuntu 20.04 LTS.
Commande Linux pmap
La commande pmap sous Linux vous permet de voir la carte mémoire d'un ou de plusieurs processus. Voici sa syntaxe :
pmap [options] pid [...]
Et voici comment la page de manuel de l'outil l'explique :
La commande pmap rapporte la carte mémoire d'un processus ou de processus.
Voici quelques exemples de style questions-réponses qui devraient vous donner une meilleure idée du fonctionnement de la commande pmap.
Q1. Comment utiliser pmap ?
L'utilisation de base est simple. Exécutez simplement la commande 'pmap' sans aucune option. Bien sûr, vous devez passer un PID de processus en entrée.
Par exemple, j'ai utilisé pmap de la manière suivante :
pmap 5146
Et voici une partie de la sortie qui a été produite :
5146:Gedit
000055BDE4835000 8K R-X-- GEdit
000055BDE4A36000 4K R ---- GEDIT
000055BDE4A37000 4K RW --- GEdit
000055BDE5D32000 anon]
00007fc910000000 132k rw --- [anon]
00007fc910021000 65404k ----- [anon]
00007fc91800000080e 00000000 64640k - --- [ anon ]
00007fc91c750000 204K r---- UbuntuMono-R.ttf
00007fc91c783000 644K r-x-- libaspell.so.15.2.0
00007fc91c824000 2048K ----- libaspell .so.15.2.0
00007fc91ca24000 20K r---- libaspell.so.15.2.0
00007fc91ca29000 4K rw--- libaspell.so.15.2.0
00007fc91ca2a2a000 - x 8 libenchant_aspell.so
00007fc91ca2c000 2044k ----- libenchant_aspell.so
00007fc91cc2b000 4k r ---- libenchant_aspell.so
00007fc91cc2c000 4k rw --- libenchant_aspell.SO
00007f91c2d000. r-x-- libenchant_hspell.so
00007fc91cc38000 2044K ----- libenchant_hspell.so 00007FC91CE37000 4K R ---- libenchant_hspell.so
00007FC91CE38000 12K RW --- libenchant_hspell.so
00007FC91CE3B000 428K R-X - libhunspell-1.6.so.0.0.1 ----- 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---- s libenchant_
Alors voilà, la sortie vous montre d'abord le nom du processus, puis le suit avec la carte mémoire.
Q2. Comment faire en sorte que pmap affiche une sortie étendue ?
Pour que pmap affiche la sortie au format étendu, utilisez l'option de ligne de commande -x. Par exemple :
pmap -x 5146Voici une partie de la sortie produite :
5146:GEdit
Adresse Kytes RSS Mode Dirty Mapping
000055BDE4835000 8 4 0 R-X-- GEdit
000055BDE4835000 0 0 0 R-X-- GEdit
000055BDE4A36000 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 RW-- - [anon]
00007fc910021000 65404 0 0 ----- [Anon]
00007fc910021000 0 0 0 ----- [anon]
00007FC918000000896 896 896 RW --- [AON ]
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
00007fc91c750000 0 0 0 r ---- /> 00007FC91C783000 644 472 0 R-X-- libaspell.so.15.2.0
00007fc91c783000 0 0 0 R-X-- libaspell.so.15.2.0
00007FC91C824000 2048 0 0 ----- libaspell.so .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 R ---- libaspell.so.15.2.0
00007fc91ca29000 4 4 4 RW --- libaspell.so.15.2.0
00007fc91ca29000 0 0 0 RW --- libaspell.so.15.2 .0
00007fc91ca2a000 8 8 0 R-X-- libenchant_aspell.so
00007fc91ca2a000 0 0 0 R-x-- libenchant_aspell.so
00007fc91ca2c000 2044 0 0 ----- libenchant_aspell.so
00007 fc91ca2c000 0 0 0 ----- libenchant_aspell.so
00007fc91cc2b000 4 4 4 r ---- libenchant_aspell.so
00007fc91cc2b000 0 0 0 r ---- libenchant_aspell.so
.. .
Notez que si vous avez besoin d'encore plus de détails, vous pouvez utiliser l'option de ligne de commande -X.
Q3. Comment faire en sorte que pmap affiche le format de l'appareil en sortie ?
Cela peut être fait en utilisant l'option de ligne de commande -d. Par exemple :
pmap -d 5146Et voici une partie de la sortie produite :
5146:GEDIT
Adresse KYTES MODE OFFSEPSPECT MAPPAGE
000055BDE4835000 8 R-X-- 0000000000000000 008:00008 GEdit
000000000000000000 008:00008 GEdit
000000000000000000 008:00008 GEdit
000000000000000000 008:00008 GEdit
00000055BDE4A36000 4 R --- 00000000001000 008:00008 GEDIT
000055BDE4A37000 4 RW --- 0000000000002000 008:00008 GEDIT
000055BDE5D32000 13944 RW --- 0000000000000000 000:00000 [AON]
00007FC9100000 132 65404 ----- 000000000000000000 000:00000 [Anon]
00007FC918000000896 RW --- 0000000000000000 000:00000 [ANON]
00007FC9180E0000 64640 ----- 00000000000000000000:00000 [ANON] /> 00007FC91C750000 204 R ---- 0000000000000000 008:00008 UBUNMONO-R.TTF
00007FC91C783000 644 R-X-- 0000000000000000008:00008 LIBASPELL.SO.15.2.20 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 008:00008 libenchant_aspell.SO
00007fc91ca2c. .So
00007fc91cc2b000 4 r ---- 0000000000001000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 RW --- 0000000000002000 008:00008 libenchant_aspell. libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000B000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 008:00008 libenchant_hspell.so
Ainsi, vous pouvez voir qu'une nouvelle colonne "appareil" a été ajoutée dans la sortie.
Q4. Comment supprimer la sortie pmap des en-têtes et pieds de page ?
Si vous ne voulez pas voir des choses comme les noms de colonne dans la sortie pmap, vous pouvez utiliser l'option de ligne de commande -q.
Par exemple :
pmap -q -d 5146Voici le résultat :
5146:GEDIT
000055BDE4835000 8 R-X-- 0000000000000000 008:00008 GEDIT
000055BDE4A36000 4 R ----- 00000000001000 00008:00008 GEDIT
0000005BDE4A.00008 00008 gedit
000055bde5d32000 13944 rw --- 0000000000000000 000:00000 [anon]
00007fc910000000 132 rw --- 0000000000000000 000:00000 [anon]
00007fc910021000 65404 ----- 0000000000000000 000:00000 [Anon]
00007FC918000000 896 RW --- 0000000000000000 000:00000 [Anon]
00007FC9180E0000 64640 ----- 0000000000000000 000:00000 [AON]
00007FC91C7500000000002 008:00008 Ubuntumono-R.TTF
00007FC91C783000 644 R-X-- 0000000000000000 008:00008 Libaspell.SO.15.2.0
00007FC91C824000 2048 ---15000000000
00007fc91ca24000 20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000 4 rw--- 00000000000a6000 008 .15.2.0
00007FC91CA2A000 8 R-X-- 0000000000000000 008:00008 LIBENCHANT_ASPELL.SO
00007FC91CA2C000 2044 ----- 0000000000002000 008:00008 Libenchant_Aspell.SO
00007fc91c2f0000400000000000000000000000000000000000000000000000010000000000000000 A00100100100000000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 RW --- 0000000000002000 008:00008 libenchant_aspell.so
00007FC91CC2D000 44 R-X - 00000000000000 008:00008 LIBENCHANTAC 000000000000B000 008:00008 libenchant_hspell.so
00007FC91CE37000 4 R ---- 0000000000AA000 008:00008 Libenchant_Hspell.so
00007FC91CE38000 12 RW - 0000000000000000B000b000.Ainsi, vous pouvez voir que l'en-tête a été supprimé de la sortie.
Q5. Comment faire en sorte que pmap affiche les chemins complets en sortie ?
Si vous souhaitez que pmap affiche le chemin complet des fichiers dans la colonne de mappage, vous pouvez utiliser l'option de ligne de commande -p.
Par exemple :
pmap -p 5146Et voici la sortie produite par cette commande :
5146 : gedit
000055bde4835000 8K r-x-- /usr/bin/gedit
000055bde4a36000 4K r---- /usr/bin/gedit
000055bde4a37000 4K /usrw--- / bin / gedit
000055bde5d32000 13944k rw --- [anon]
00007fc910000000 132k rw --- [anon]
00007FC910021000 65404K ----- [anon]
00007FC918000000008 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. donc
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/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 r-x--- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2b0000 44K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell. donc
00007fc91d2bb000 2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.soAinsi, vous pouvez voir que les noms de fichiers avec des chemins complets sont produits dans la sortie.
Conclusion
Si votre travail consiste à traiter des cartes mémoire de processus, cet outil est fait pour vous. Dans ce tutoriel, nous avons décrit l'utilisation de base de cette commande. Une fois que vous avez terminé de pratiquer tout ce dont nous avons discuté ici, rendez-vous sur la page de manuel de l'outil pour en savoir plus.