GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de comandos pmap de Linux para principiantes (5 ejemplos)

La línea de comandos de Linux ofrece muchas herramientas que lo ayudan a saber más sobre los procesos que están actualmente activos en su sistema. Una de esas utilidades es pmap, que informa sobre el mapa de memoria del proceso. En este tutorial, discutiremos los conceptos básicos de pmap usando algunos ejemplos fáciles de entender.

Pero antes de hacerlo, vale la pena mencionar que todos los ejemplos aquí se han probado en una máquina con Ubuntu 20.04 LTS.

Comando Linux pmap

El comando pmap en Linux le permite ver el mapa de memoria de uno o más de un proceso. La siguiente es su sintaxis:

pmap [opciones] pid [...]

Y así es como lo explica la página de manual de la herramienta:

El comando pmap informa el mapa de memoria de un proceso o procesos.

Los siguientes son algunos ejemplos de estilo de preguntas y respuestas que le darán una idea aún mejor de cómo funciona el comando pmap.

P1. ¿Cómo usar pmap?

El uso básico es simple. Simplemente ejecute el comando 'pmap' sin ninguna opción. Por supuesto, debe pasar un PID de proceso como entrada.

Por ejemplo, usé pmap de la siguiente manera:

pmapa 5146

Y aquí hay una parte de la salida que se produjo:

 5146:GEDIT 
0000555BDE4835000 8K R-X-- GEDIT
0000555BDE4A36000 4K R ----- GEDIT
00005555BDE4A37000 4K RW --- GEDIT
000055BDE5D32000 1394K --- [ anon]
00007FC910000000 132K RW --- [anon]
00007FC910021000 65404K ----- [anon]
00007fc91800000000 896K RW --- [anon]
00007fc9180e0000 64640k- ---   [ anon ]
00007fc91c750000    204K r---- UbuntuMono-R.ttf
00007fc91c783000    644K r-x-- libaspell.so.15.2.0
00007fc91c824000   ----- libaspell .so.15.2.0
00007fc91ca24000     20K r---- libaspell.so.15.2.0
00007fc91ca29000      4K rw--- libaspell.so.15.2.0
00007fc91ca2a000  r - - 8K libenchant_aspell.so
00007FC91CA2C000 2044K ----- libenchant_aspell.so
00007fc91cc2b000 4K r ----- libenchant_aspell.so
007fc91cc2c2000 4k-rw --- libenchant.. 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.0.0.1 <1000 000000007FIN. ----- 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---- liblove_myspell...
...
...

Así que ahí lo tienes, la salida primero te muestra el nombre del proceso y luego lo sigue con el mapa de memoria.

P2. ¿Cómo hacer que pmap muestre una salida extendida?

Para hacer que pmap muestre la salida en formato extendido, use la opción de línea de comando -x. Por ejemplo:

pmap -x 5146

Lo siguiente es una parte de la salida producida:

 5146:GEDIT 
Dirección Kbytes RSS Mapeo de modo sucio
000055BDE4835000 8 4 0 R-X-- GEDIT
0000555BDE4835000 --- gedit
0000555bde4a36000 0 0 0 r ----- 13692 13692 RW --- [anon]
000055BDE5D32000 0 0 0 0 RW --- [anon]
00007FC910000000 132 44 44 RW --- [anon]
00007FC910000000 0 0 0 RW---- -) ]
00007fc918000000       0       0       0 rw---   [ anónimo ]
00007fc9180e0000   64640       0       0 -----   [ anónimo ]
0 0007FC9180E0000 0 0 0 ----- [anon]
00007FC91C750000 204 136 0 r ---- Ubuntumono-r.ttf
0000007FC91C750000 0 0 0 R ----- Ubuntumono-r.ttf
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.SoSO .15.2.0
00007FC91C824000 0 0 0 ----- libaspell.so.15.2.2.0
00007fc91ca24000 20 20 20 r ---- Libaspell.so.15.2.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        0        0        0        0        0       .0
00007FC91CA2A000 8 8 0 R-X-- libenchant_aspell.so
00007fc91ca2a000 0 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
.. .. .. .
...
...

Tenga en cuenta que si necesita aún más detalles, puede usar la opción de línea de comandos -X.

P3. ¿Cómo hacer que pmap muestre el formato del dispositivo en la salida?

Esto se puede hacer usando la opción de línea de comandos -d. Por ejemplo:

pmap -d 5146

Y aquí hay una parte de la salida producida:

 5146:gedit 
Dirección Modo Kbytes Offset Device Mapping
000055bde4835000 8 r-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 4 r ---- 0000000000001000 008:00008 gedit
0000555BDE4A37000 4 RW --- 0000000000002000 008:0000008 GEDIT
0000555BDE5D32000 13944 RW --- 000000000000000000 000:00000 [ANON]
00007FC910000000 132 RW ---- 0000000000000000000000000000000000000000ES [0000 ANON] 65404 ----- 000000000000000000 000:00000 [anon]
00007fc918000000 896 RW --- 000000000000000000 000:00000 [ANON]
00007FC9180E0000 64640 ------ 0000000000000000 000:00000 [ANON] /> 00007FC91C750000 204 R ---- 000000000000000000 008:00008 UBUNTUMONO-R.TTF
00007FC91C783000 644 R-X-- 000000000000000000008:00008 LIBASPELL.SO.15.2.2.0 <> 0000000000000000000000STINGINE. 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-- 000000000000000000000022020202020020020020020000002000000200002000020000200002000000200000020000000020000200002000020000200002000020000002002000020020000200200002000020000200002000020000200002000020000200002000020000200002000020000200002000020000200002000020000200002000. .SO
00007FC91CC2B000 4 R ----- 000000000000001000 008:00008 LIBENCHAND_ASPELL.SO
00007FC91CC2C000 4 RW --- 000000000000002000 008:00008 LIBENCHANT_ASPELL.SO libenchant_hspell.so
00007fc91cc38000 2044 ----- 0000000000000000B000 008:0000008 Libenchant_hspell.so
00007FC91CE37000 4 R --------- 000000000000A000 008:00008 LIBENCHANT_HHAN 008:00008 libenchant_hspell.so
...
...
...

Entonces puede ver que se agregó una nueva columna 'dispositivo' en la salida.

P4. ¿Cómo quitar la salida de pmap de encabezados y pies de página?

Si no quiere ver cosas como los nombres de las columnas en la salida de pmap, puede usar la opción de línea de comandos -q.

Por ejemplo:

pmap -q -d 5146

El siguiente fue el resultado:

 5146:GEDIT 
0000555BDE4835000 8 R-X-- 000000000000000000 008:00008 GEDIT
0000555BDE4A36000 4 R ---- 00000000000000001000 008:00008 GEDIT
000055555BDE4 GEDIT
0000555BDE5D32000 13944 RW --- 00000000000000000000 000:00000 [ANON]
00007FC910000000 132 RW --- 000000000000000000000000000000000000000000000000000000000000000000000000000000SETROS [anon]
00007FC918000000 896 RW --- 0000000000000000000000:00000 [ANON]
00007FC9180E0000 64640 ------ 00000000000000000000 000:00000 [ANON]
00007FC91C750000 204 R-AL 008:00008 Ubuntumono-r.ttf
00007FC91C783000 644 R-X-- 00000000000000000000 008:00008 LIBASPELL.SO.15.2.0
00007FC91C824000 2048 ------ 00000000A1000 008:0000808 LIBELL.
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000       4 rw--- 00000000000a6000 008:libaspell. .15.2.0
00007FC91CA2A000 8 R-X-- 000000000000000000 008:00008 LIBIPLANTE_ASPELL.SO
00007FC91CA2C000 2044 ----- 000000000000002000 008:00008 LIBENCHANT_ASPELL.SO 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 rw --- 00000000000000002000 008:0000008 libenchant_aspell.so
00007fc91cc2d000 44 r-x-- 00000000000000 008:000000800008 00008 00008 00008 0000008008 000000800008000080000800008000080000800008008 00008008S LIBELL. 00000000000000B000 008:00008 Libenchant_hspell.so
00007FC91CE37000 4 R ----- 000000000000A000 008:00008 LIBENCHAND_HSPELL.SO
00007FC91CE38000 12 RW ---- 0000000000000000000000 88.

Entonces puede ver que el encabezado se eliminó de la salida.

P5. ¿Cómo hacer que pmap muestre rutas completas en la salida?

En caso de que desee que pmap muestre la ruta completa a los archivos en la columna de asignación, puede usar la opción de línea de comando -p.

Por ejemplo:

pmap -p 5146

Y aquí está la salida producida por este comando:

5146:   gedit
000055bde4835000      8K r-x-- /usr/bin/gedit
000055bde4a36000      4K r---- /usr/bin/gedit
000055bde4a37000      4K rw--- /us /bin /gedit
0000555bde5D32000 13944K RW --- [anon]
00007fc910000000 132K RW --- [anon]
00007fc910021000 65404K ----- [anon]
00007fc9180000000000000000000000 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/encantar/libcantar_aspell. entonces
00007fc91cc2b000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91cc2c000      4K rw--- /usr/lib/x86_64-linux-gnu/encantar /libcantar_aspell.so
00007fc91cc2d000     44K r-x-- /usr/lib/x86_64-linux-gnu/encantar/libcantar_hspell.so
00007fc91cc38000   2044K ----- /usr/lib/x86_64-linux-gnu /encantar/libcantar_hspell.so
00007fc91ce37000      4K r---- /usr/lib/x86_64-linux-gnu/encantar/libcantar_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/ encantar/libencantar_mihechizo.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/libenchant_ispell. entonces
00007fc91d2bb000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so

Entonces puede ver que los nombres de archivo con rutas completas se producen en la salida.

Conclusión

Si su trabajo implica manejar mapas de memoria de procesos, esta herramienta es para usted. En este tutorial, hemos descrito el uso básico de este comando. Una vez que haya terminado de practicar todo lo que hemos discutido aquí, diríjase a la página de manual de la herramienta para obtener más información al respecto.


Linux
  1. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  2. Tutorial de comandos de comunicación de Linux para principiantes (5 ejemplos)

  3. Tutorial de comando Linux df para principiantes (8 ejemplos)

  4. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

  5. Tutorial de comando de nombre de host de Linux para principiantes (5 ejemplos)

Linux who Command Tutorial para principiantes (8 ejemplos)

Tutorial de comandos Linux nl para principiantes (7 ejemplos)

Tutorial de comandos de Linux nm para principiantes (10 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)