Linuxコマンドラインには、システムで現在アクティブになっているプロセスについて詳しく知るのに役立つ多くのツールが用意されています。そのようなユーティリティの1つは、プロセスメモリマップを報告するpmapです。このチュートリアルでは、わかりやすい例を使用してpmapの基本について説明します。
ただし、その前に、ここでのすべての例がUbuntu20.04LTSマシンでテストされていることを言及する価値があります。
Linuxpmapコマンド
Linuxのpmapコマンドを使用すると、1つまたは複数のプロセスのメモリマップを表示できます。その構文は次のとおりです。
pmap [options] pid [...]
そして、ツールのマニュアルページで説明されているのは次のとおりです。
pmapコマンドは、1つまたは複数のプロセスのメモリマップを報告します。
以下は、pmapコマンドがどのように機能するかについてさらに良いアイデアを提供するQ&Aスタイルの例です。
Q1。 pmapの使い方は?
基本的な使い方は簡単です。オプションなしで「pmap」コマンドを実行するだけです。もちろん、プロセスPIDを入力として渡す必要があります。
たとえば、私は次のようにpmapを使用しました:
pmap 5146
そして、これが生成された出力の一部です:
5146:gedit
000055bde4835000 8K r-x-- gedit
000055bde4a36000 4K r ---- gedit
000055bde4a37000 4K rw --- gedit
000055bde5d32000 13944 anon]
00007fc910000000 132K rw --- [anon]
00007fc910021000 65404K ----- [anon]
00007fc918000000 896K rw --- [anon]
00007fc9180e0000 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 8K r-x-- libenchant_aspell.so
00007fc91ca2c000 2044K ----- libenchant_aspell.so
00007fc91cc2b000 4K r ---- libenchant_aspell.so
00007fc91cc2c000 4K rw --- libenchant_as 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
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
...
...
これで、出力に最初にプロセスの名前が表示され、次にメモリマップが続きます。
Q2。 pmapに拡張出力を表示するにはどうすればよいですか?
pmapに拡張形式で出力を表示するには、-xコマンドラインオプションを使用します。例:
pmap -x 5146
生成される出力の一部を次に示します。
5146:geditの
アドレスバイトRSSダーティモードマッピング
000055bde4835000 8 4 0、R-x-- geditの
000055bde4835000 0 0 R-x-- geditの
000055bde4a36000 4 4 4 R- --- gedit
000055bde4a36000 0 0 r ---- gedit
000055bde4a37000 4 4 4 rw --- gedit
000055bde4a37000 gedit
000055bde4a37000 13692 13692 rw --- [anon]
000055bde5d32000 0 0 rw --- [anon]
00007fc910000000 000000 fc 0 /> 44 rw --- [an -[anon]
00007fc910021000 65404 0 ----- [anon]
00007fc910021000 0 0 0 ----- [anon]
00007fc918000000 ]
00007fc918000000 0 0 rw --- [anon]
00007fc9180e0000 64640 0 0 ----- [anon]
0 0007fc9180e0000 0 0 0 ----- [anon]
00007fc91c750000 204 136 0 r ---- UbuntuMono-R.ttf
00007fc91c750000 o ---- U 0 r 0 0 /> 00007fc91c783000 644 472 0 r-x-- libaspell.so.15.2.0
00007fc91c783000 0 0 0 r-x-- libaspell.so.15.2.0
00007fc91c82 .15.2.0
00007fc91c824000 0 0 ----- libaspell.so.15.2.0
00007fc91ca24000 20 20 20 r ---- libaspell.so.15.2.0
00007fc91 0 0 r ---- libaspell.so.15.2.0
00007fc91ca29000 4 4 4 rw --- libaspell.so.15.2.0
00007fc91ca29000 0 so-5.2 as 0 r .0
00007fc91ca2a000 8 8 0 r-x-- libenchant_aspell.so
00007fc91ca2a000 0 0 0000 chan 0 /> 0 0000 fc 0 /> 0 r-x-- libenchant_aspell.so
00007fc91cc2b000 4 4 4 r ---- libenchant_aspell.so
00007fc91cc2b000 。
...
...
さらに詳細が必要な場合は、-Xコマンドラインオプションを使用できます。
Q3。 pmapにデバイス形式を出力で表示させる方法は?
これは、-dコマンドラインオプションを使用して実行できます。例:
pmap -d 5146
そして、ここに生成された出力の一部があります:
5146:gedit
アドレスキロバイトモードオフセットデバイスマッピング
000055bde48350008 r-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 008:00 4 r ---- 000055bde4a37000 4 rw --- 0000000000002000 008:00008 gedit
000055bde5d32000 13944 rw --- 0000000000000000 000:00000 [anon]
00007fc910000000 132 rw --- 0000000000000000 000:00000 [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 ----- 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 libenchant_aspell.so
00007fc91ca2c000 2044 ----- 000000000000 .so
00007fc91cc2b000 4 r ---- 0000000000001000 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 rw --- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2d000 44 libenchant_hspell.so
00007fc91cc38000 2044 ----- 000000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r ---- 000000000000a000 008:00008 libenchant_hspell.so
00007fc91ce38000 008:00008 libenchant_hspell.so
...
...
...
したがって、新しい列「デバイス」が出力に追加されたことがわかります。
Q4。ヘッダーとフッターのpmap出力を削除するにはどうすればよいですか?
pmap出力に列名などを表示したくない場合は、-qコマンドラインオプションを使用できます。
例:
pmap -q -d 5146
出力は次のとおりです。
5146:geditしたがって、ヘッダーが出力から削除されたことがわかります。
000055bde4835000 8 r-x-- 0000000000000000 008:00008 gedit
000055bde4a36000 4 r ---- 0000000000001000 008:00008 gedit
000055bde4a37000 00 00:00 000000 000000 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 [anon]
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 ----- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2b000 4 008:00008 libenchant_aspell.so
00007fc91cc2c000 4 rw --- 0000000000002000 008:00008 libenchant_aspell.so
00007fc91cc2d000 44 r-x-- 0000000000000000 008:00008 libenchant_hspell.so
00007fc 000000000000b000 008:00008 libenchant_hspell.so
00007fc91ce37000 4 r ---- 000000000000a000 008:00008 libenchant_hspell.so
00007fc91ce38000 12 rw --- 000000000000b000 008:00008 libenchant_hspell.so
Q5。 pmapに出力にフルパスを表示させる方法は?
pmapでマッピング列にファイルへのフルパスを表示する場合は、-pコマンドラインオプションを使用できます。
例:
pmap -p 5146
そして、これがこのコマンドによって生成された出力です:
5146:gedit
000055bde4835000 8K r-x-- / usr / bin / gedit
000055bde4a36000 4K r ---- / usr / bin / gedit
000055bde4a37000 4K rw --- / usr / 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 / 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_ so
00007fc91d2bb000 2048K ----- /usr/lib/x86_64-linux-gnu/enchant/libenchant_ispell.so
したがって、完全なパスを持つファイル名が出力に生成されていることがわかります。
あなたの仕事がプロセスメモリマップを扱うことを含むならば、このツールはあなたのためです。このチュートリアルでは、このコマンドの基本的な使用法について説明しました。ここで説明した内容の練習が終わったら、ツールのマニュアルページにアクセスして詳細を確認してください。