GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial sui comandi pmap di Linux per principianti (5 esempi)

La riga di comando di Linux offre molti strumenti che ti aiutano a saperne di più sui processi attualmente attivi nel tuo sistema. Una di queste utilità è pmap, che riporta la mappa della memoria di processo. In questo tutorial, discuteremo le basi di pmap usando alcuni esempi di facile comprensione.

Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui sono stati testati su una macchina Ubuntu 20.04 LTS.

Comando Linux pmap

Il comando pmap in Linux ti consente di vedere la mappa della memoria di uno o più processi. Di seguito è riportata la sua sintassi:

pmap [opzioni] pid [...]

Ed ecco come lo spiega la pagina man dello strumento:

Il comando pmap riporta la mappa della memoria di uno o più processi.

Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti un'idea ancora migliore di come funziona il comando pmap.

Q1. Come si usa pmap?

L'utilizzo di base è semplice. Basta eseguire il comando 'pmap' senza alcuna opzione. Ovviamente, devi passare un PID di processo come input.

Ad esempio, ho usato pmap nel modo seguente:

pmap 5146

Ed ecco una parte dell'output che è stato prodotto:

 5146:gedit 
000055bde4835000 8k r-x-- gedit
000055bde4a36000 4k r ---- gedit
000055bde4a37000 4k rw --- GEdit
0000555d32000 RW--RW--[ anon]
00007fc910000000 132K RW --- [anon]
00007fc910021000 65404k ----- [anon]
00007fc9180000000000 896K RW --- [anon]
00007fc9180e00 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
00007fc91ca2a000     libenchant_aspell.so
00007fc91ca2c000 2044k ------ libenchant_aspell.so
00007fc91cc2b000 4k r ---- libenchant_aspell.so
00007fc91cc2c000 4k rw --- libenchant_saspell.so 00007fc91cc38000   2044K ----- libenchant_hspell.so 00007fc91ce37000 4k r ---- libenchant_hspell.so
00007fc91ce38000 12k rw --- libenchant_hspell.so
00007fc91ce3b000 428k r-x-- Libhunspell-18.0.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---- libenchant_myspell...so

...
...

Quindi il gioco è fatto, l'output ti mostra prima il nome del processo e poi lo segue con la mappa della memoria.

Q2. In che modo pmap mostra un output esteso?

Per fare in modo che pmap mostri l'output in formato esteso, usa l'opzione della riga di comando -x. Ad esempio:

pmap -x 5146

Di seguito una parte dell'output prodotto:

 5146:gedit 
Indirizzo kbyte RSS mappatura in modalità sporca
000055BDE4835000 8 4 0 R-X-- GEDIT
000055BDE4835000 0 0 R-X-- GEDIT
000055555bde4a3000 4 4 R- --- GEDIT
000055BDE4A36000 0 0 0 R ---- GEDIT
000055BDE4A37000 4 4 4 RW --- GEDIT
000055BDE4A37000 0 0 RW --- GEDIT
0000555bde5d32000 13944 13692 13692 RW --- [anon]
000055bde5d32000 0 0 0 rw --- [anon]
00007fc910000000 132 44 44 rw --- [anon]
00007fc910000000 0 0 rw-- -[anon]
00007fc910021000 65404 0 0 ----- [anon]
00007fc910021000 0 0 0 ----- [anon]
00007fc91800000000000000000000 896 896 896 rw --- [anonon ]
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 ---- 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.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 rw --- libaspell.so.15.2 .0
00007fc91ca2a000 8 8 0 r-x-- libenchant_aspell.so
00007fc91ca2a000 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 r ---- Libancant_aspell.so
.. .. .. .. .
...
...

Nota che se hai bisogno di ulteriori dettagli, puoi usare l'opzione della riga di comando -X.

T3. Come fare in modo che pmap mostri il formato del dispositivo nell'output?

Questo può essere fatto usando l'opzione della riga di comando -d. Ad esempio:

pmap -d 5146

Ed ecco una parte dell'output prodotto:

; 000055bde4a37000 4 rw --- 0.000.000,000002 miliardi 008:00008 gedit
000055bde5d32000 13944 rw --- 0000000000000000 000:00000 [anon]
00007fc910000000 132 rw --- 0000000000000000 000:00000 [anon]
00007fc910021000 653 /> 00007fc91c750000 204 r ---- 0000000000000000 008:00008 UbuntuMono-R.ttf
00007fc91c783000 644 r-x-- 0000000000000000 008:00008 libaspell.so.15.2.0
00007fc91c824000 2048 ----- 00000000000a1000 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
00007fc91ca2c000 2044 ----- 0.000.000,000002 miliardi 008:00008 libenchant_aspell .so
00007fc91cc2b000 4 r ---- 0000000000001000 008:00008 libenchant_aspell.so
00007fc91cc000 4 rw --- 0000000000002000 008:00008 000000 000000 000000 000000 000000 000000 000000 00007D000 --- 000000 4400 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00007D000-000000 4400 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00007D000-000000 4400 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 00007D000 libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r ---- 000000000000a000 008:00008 libenchant_hspell.so
00007fc91ce38000 12 rw --- 000000000000b000 008:00008 libenchant_hspell.so
...
...
...

Quindi puoi vedere che una nuova colonna "dispositivo" è stata aggiunta nell'output.

Q4. Come rimuovere l'output di pmap da intestazioni e piè di pagina?

Se non vuoi vedere cose come i nomi delle colonne nell'output di pmap, puoi usare l'opzione della riga di comando -q.

Ad esempio:

pmap -q -d 5146

Di seguito l'output:

; gedit
000055bde5d32000 13944 RW --- 000000000000000000 000:00000 [anon]
00007fc910000000 132 RW --- 00000000000000 000:00000 [anon]
00007FC910021000 65404 --------- [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-- 0000000000000000 008:00008 libaspell.so.15.2.0
00007FC91C824000 2048 ------ 000000000 00008:00008 LIBASPELL.
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000       4 rw--- 000000000000a6000 08 .15.2.0
00007FC91CA2A000 8 R-X-- 00000000000000 008:00008 libenchant_aspell.so
00007fc91ca2c000 2044 ----- 000000000000002000 0000:000000 LIBANCHANT_SASPELL1000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 RW --- 0.000.000,000002 miliardi 008:00008 libenchant_aspell.so
00007fc91cc2d000 44 r-x-- 0000000000000000 008:00008 libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000B000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r ---- 000000000000A000 008:00008 libenchant_hspell.so
00007fc91ce38000 12 rw --- 00000000 00b000:00008 00008

Quindi puoi vedere che l'intestazione è stata rimossa dall'output.

Q5. Come fare in modo che pmap mostri i percorsi completi in output?

Nel caso in cui desideri che pmap mostri il percorso completo dei file nella colonna di mappatura, puoi utilizzare l'opzione della riga di comando -p.

Ad esempio:

pmap -p 5146

Ed ecco l'output prodotto da questo comando:

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] 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/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/libenchant_ispell. quindi
00007fc91d2bb000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so

Quindi puoi vedere che nell'output vengono prodotti nomi di file con percorsi completi.

Conclusione

Se il tuo lavoro prevede la gestione delle mappe di memoria di processo, questo strumento fa per te. In questo tutorial, abbiamo descritto l'utilizzo di base di questo comando. Una volta che hai finito di esercitarti su ciò di cui abbiamo discusso qui, vai alla pagina man dello strumento per saperne di più.


Linux
  1. Tutorial sul comando cd di Linux per principianti (8 esempi)

  2. Tutorial comando Linux comm per principianti (5 esempi)

  3. Linux df Command Tutorial per principianti (8 esempi)

  4. Tutorial sul comando della data di Linux per principianti (8 esempi)

  5. Tutorial sul comando del nome host Linux per principianti (5 esempi)

Linux who Command Tutorial per principianti (8 esempi)

Linux nl Command Tutorial per principianti (7 esempi)

Tutorial sui comandi Linux nm per principianti (10 esempi)

Esercitazione sui comandi OD Linux per principianti (6 esempi)

Linux w Command Tutorial per principianti (5 esempi)

Tutorial sui comandi Linux ss per principianti (8 esempi)