GNU/Linux >> Znalost Linux >  >> Linux

Linuxový návod příkazu pmap pro začátečníky (5 příkladů)

Příkazový řádek Linuxu nabízí mnoho nástrojů, které vám pomohou dozvědět se více o procesech, které jsou aktuálně aktivní ve vašem systému. Jedním z takových nástrojů je pmap, který hlásí mapu paměti procesu. V tomto tutoriálu probereme základy pmap pomocí několika snadno pochopitelných příkladů.

Ale než to uděláme, stojí za zmínku, že všechny příklady zde byly testovány na počítači Ubuntu 20.04 LTS.

Příkaz pmap pro Linux

Příkaz pmap v Linuxu umožňuje zobrazit mapu paměti jednoho nebo více než jednoho procesu. Následuje jeho syntaxe:

pmap [volby] pid [...]

A zde je návod, jak to vysvětluje manuálová stránka nástroje:

Příkaz pmap hlásí mapu paměti procesu nebo procesů.

Následuje několik příkladů ve stylu otázek a odpovědí, které by vám měly poskytnout ještě lepší představu o tom, jak funguje příkaz pmap.

Q1. Jak používat pmap?

Základní použití je jednoduché. Stačí provést příkaz 'pmap' bez jakékoli volby. Samozřejmě musíte jako vstup předat procesní PID.

Například jsem použil pmap následujícím způsobem:

pmap 5146

A zde je část výstupu, který byl vyroben:

5146:gedit
000055bde4835000 8K R-X-- GEDIT
000055bde4a36000 4K R ---- Gedit
000055bde4a37000 4K RW --- Gedit
000055bde5d32000 139444K RW--[ Anon]
00007FC910000000 132K RW --- [Anon]
00007FC910021000 65404K ----- [Anon]
00007FC918000000 896K RW ---- [ANON]
00007fc91c750000    204K r---- UbuntuMono-R.ttf
00007fc91c783000    644K r-x-- 08.04.09 05.05.04 2.01.00 .so.15.2.0
00007fc91ca24000     20 000 r---- libaspell.so.15.2.0
00007fc91ca29000       4K-- 108c.so.0.0 libenchant_asperl.so
00007fc91ca2c000 2044K ----- libenchant_asper.so
00007fc91cc2b000 4k R ---- libenchant_asper.so
00007fc91cc2c000 4K RW ---- libenchant.so
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,1
----- libhunspell-1.6.so.0.0.1
00007fc91d0a5000      4K r---- libhunspell-1.6.so.0.0.1
00007fc91d0alib016 Kr..6 hu-l 1 1. 0.0.1
00007fc91d0aa000     16K r-x-- libenchant_myspell.so
00007fc91d0ae000   2048K ----- libenchant_myspell.so_40 Klf-201 000
...
...

Takže tady to je, výstup vám nejprve ukáže název procesu a poté jej následuje s mapou paměti.

Q2. Jak přimět pmap zobrazovat rozšířený výstup?

Chcete-li, aby pmap zobrazoval výstup v rozšířeném formátu, použijte volbu -x příkazového řádku. Například:

pmap -x 5146

Následuje část vytvořeného výstupu:

5146:gedit
Adresa kbytes RSS Dirty Mode 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 0 R ---- Gedit
000055BDE4A37000 4 4 4 RW --- Gedit
000055bde4a37000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RW- 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 ----- [Anon]
00007FC910021000 0 0 0 ----- [Anon]
00007FC918000000 896 896 896 RW --- [ANON ]
00007fc918000000       0       0       0 rw---   [ anon ]
00007fc9180e0000   64640    64640         0           0           0    0007FC9180E0000 0 0 0 ------ [ANON]
00007FC91C750000 204 136 0 R ---- Ubuntumono-r.ttf
00007fc91c750000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 ----- LIBASPELL.SO .15.2.0
00007FC91C824000 0 0 0 ----- LIBASPELL.SO.15.2.0
00007FC91CA24000 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 0 ----- LIBENCHANT_ASPELL.SO
00007FC91CC2B000 4 4 R ---- LIBENCHANT_ASPELL.SO
00007FC91CC2B000 0 0 0 R ---- LIBENCHANT_ASPELL.SO
.. .. .
...
...

Všimněte si, že pokud potřebujete ještě více podrobností, můžete použít volbu -X příkazového řádku.

Q3. Jak nastavit, aby pmap zobrazoval formát zařízení ve výstupu?

To lze provést pomocí volby příkazového řádku -d. Například:

pmap -d 5146

A zde je část vytvořeného výstupu:

5146:gedit
Adresa KBYTES režim Offsetova mapování zařízení
000055bde4835000 8 R-X-- 000000000000001000 008:00008 GEDIT
000055BDE4A37000 4 RW --- 0000000000002000 008:00008 GEDIT
000055BDE5D32000 13944 RW ---- 000000000000 [ANON] 65404 ----- 0000000000000000 000:00000 [Anon]
00007FC918000000 896 RW --- 000000000000000000:00000 [ANON]
00007FC9180E 0000 64640 ------ 00000000000000 00:00 000 000 [ANON] /> 00007FC91C750000 204 R ---- 00000000000000 008:00008 UBUNTUMONO-R.TTF
00007FC91C783000 644 R-X-- 00000000000000 008:00008 LIBASPELL.SO. 008:00008 libaspell.so.15.2.0
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.> 00007FC91CA29000 4 RW --- 00000000000A6000 008:00008 LIBASPELL.SO.15.2.0
00007FC91CA2A000 8 R-X-00000000000000 008:00008 00000202000 0000 0000 .so
00007FC91CC2B000 4 R ---- 00000000001000 008:00008 libenchant_asper.so
00007fc91cc2c000 4 Rw --- 00000000000000 008:0000 00 ° libenchant_hspell.so
00007fc91cc38000 2044 ----- 0000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r ---- 00000000000000 0000000000. 008:00008 libenchant_hspell.so
...
...
...

Takže můžete vidět, že do výstupu byl přidán nový sloupec 'zařízení'.

4. Jak odstranit z výstupu pmap záhlaví a zápatí?

Pokud nechcete vidět věci jako názvy sloupců ve výstupu pmap, můžete použít volbu -q příkazového řádku.

Například:

pmap -q -d 5146

Následující výstup byl:

5146:gedit
000055bde4835000 8 R-X-- 00000000000000 008:00008 GEDIT
000055BDE4A300000000000 008:00000050050050050050050050050050050050050050050000 00000000 00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000 0000000000 GEDIT
000055BDE5D32000 13944 RW --- 000000000000 000:00000 [ANON]
00007FC9100 000 132 RW --- 0000000000000000 000:00000 [ANON]
000070004 ---- p---- 000000000000 ------ 000000000000-p---- p---- 000000000000-p--c [Anon]
00007fc918000000 896 RW --- 00000000000000 000:00000 [Anon]
00007FC9180E0000 64640 ----- 0000000000000000 000:00000 [ANON]
000077fc91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c91c, 00000000000000 008:00008 Ubuntumono-r.ttf
00007FC91C783000 644 R-X-- 00000000000000 008:00008 Libasperl.So.15.2.0
00007FC91C824000 2048 ------ 008:0000881000 008:0000881 000 008:000088801000 008:
00007fc91ca24000      20 r---- 00000000000a1000 008:00008 libaspell.so.15.2.0
00007fc91ca29000 00.0 00.0007 0w 0 0 0 0 00.00 .15.2.0
00007FC91CA2A000 8 R-X-- 00000000000000 008:00008 LIBENCHANT_ASPELL.SO
00007FC91CA2C000 2044 ----- 0000000000 008:00008 LIBENCHANT_ASPELL.SO
008:00008 libenchant_asperl.so
00007fc91cc2c000 4 RW --- 00000000002000 008:000000 000000:0000 00 00 00 00 00 00008.SONDISTIONS 000000000000B000 008:00008 LIBENCHANT_HSPELL.SO
00007FC91CE37000 4 R ---- 0000000000A000 008:00008.SO PRE> PRO

Takže můžete vidět, že záhlaví bylo odstraněno z výstupu.

O5. Jak zajistit, aby pmap zobrazoval ve výstupu úplné cesty?

V případě, že chcete, aby pmap zobrazoval úplnou cestu k souborům ve sloupci mapování, můžete použít volbu -p příkazového řádku.

Například:

pmap -p 5146

A zde je výstup vytvořený tímto příkazem:

5146:   gedit
000055bde4835000      8 000 r-x-- /usr/bin/gedit
000055bde4a36000        4K r----- /usr/3000005.      /7000005. /bin /gedit
000055bde5d32000 13944k RW --- [anon]
00007fc910000000 132K RW --- [Anon]
00007FC910021000 65404K ----- [Anon]
00007fc9180000 896k 896k918000000 896k918000000 896k918000000007FC918000000 rw---   [ anon ]
00007fc9180e0000  64640K -----   [ anon ]
00007fc91c750000    204K r---- /usr/share-Rubuntu/Monttu />00007fc91c783000    644 kB r-x-- /usr/lib/x86_64-linux-gnu/libaspell.so.15.2.0
00007fc91c824000   2048K/lib-us8ux----64 ... linux-gnu/libaspell.so.15.2.0
00007fc91ca2a000      8K r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so --
00007 000007 /004 /usr4/20-004 lib/x86_64-linux-gnu/enchant/libenchant_aspell. so
00007fc91cc2b000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_aspell.so
00007fc91cc2c000  8     4K-linusrx-/libx-6 /libenchant_aspell.so
00007fc91cc2d000     44 kB r-x-- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91cc38000 K---gnuxu -/6-gnu- 204 /enchant/libenchant_hspell.so
00007fc91ce37000      4K r---- /usr/lib/x86_64-linux-gnu/enchant/libenchant_hspell.so
00007fc91ce38000/lib-w/xr  6 linux-gnu/enchant/libenchant_hspell.so
00007fc91ce3b000    428 kB r-x-- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1 --f-2009007 usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0a5000      4K r---- /usr/lib/x86_64-linux-gnu/libhunspell.0.1
00007fc91d0a6000     16 kB rw--- /usr/lib/x86_64-linux-gnu/libhunspell-1.6.so.0.0.1
00007fc91d0aa000 /x-/-x-nus/lib-x-/8-x-g 1.6. enchant/libenchant_myspell.so
00007f c91d0ae000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2ae000      4K r---- /usr/lib-linux86.so
00007fc91d2af000      4K rw--- /usr/lib/x86_64-linux-gnu/enchant/libenchant_myspell.so
00007fc91d2b0000  8    44K/linusr/libl_6-nu so
00007fc91d2bb000   2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so

Můžete tedy vidět, že ve výstupu jsou vytvářeny názvy souborů s úplnými cestami.

Závěr

Pokud vaše práce zahrnuje práci s mapami paměti procesů, tento nástroj je pro vás. V tomto tutoriálu jsme popsali základní použití tohoto příkazu. Jakmile dokončíte procvičování toho, co jsme zde probrali, přejděte na manuálovou stránku nástroje, kde se o něm dozvíte více.


Linux
  1. Linux cd command tutorial pro začátečníky (8 příkladů)

  2. Linux Date Command Tutorial pro začátečníky (8 příkladů)

  3. Linux hostname Command Tutorial pro začátečníky (5 příkladů)

  1. Výuka příkazů Linux pro začátečníky (5 příkladů)

  2. Linux df Command Tutorial pro začátečníky (8 příkladů)

  3. Linux du Command Tutorial pro začátečníky (10 příkladů)

  1. Výukový program Linux echo Command pro začátečníky (5 příkladů)

  2. Linux env Command Tutorial pro začátečníky (5 příkladů)

  3. Návod k příkazu velikosti Linuxu pro začátečníky (6 příkladů)