Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通过/proc或者常规命令比如top或ps得到它。
语法或用法
#pmap PID或者#pmap [options] PID
在输出中它显示全部的地址,kbytes,mode还有mapping。
选项
-x extended显示扩展格式
-d device显示设备格式
-q quiet不显示header/footer行
-V 显示版本信息
单一进程内存状态
[root@info~]#pmap1013
1013:/usr/sbin/sshd
001100001480Kr-x-/usr/lib/libcrypto.so.1.0.0
0028200080Krw--/usr/lib/libcrypto.so.1.0.0
0029600012Krw--[anon]
0029900036Kr-x-/lib/libkrb5support.so.0.1
002a20004Krw--/lib/libkrb5support.so.0.1
002a300016Kr-x-/lib/libplc4.so
002a70004Krw--/lib/libplc4.so
002ab00088Kr-x-/lib/libaudit.so.1.0.0
002c10004Kr--/lib/libaudit.so.1.0.0
002c20004Krw--/lib/libaudit.so.1.0.0
002c3000216Kr-x-/lib/libgssapi_krb5.so.2.2
002f90004Krw--/lib/libgssapi_krb5.so.2.2
002fa000808Kr-x-/lib/libkrb5.so.3.3
003c400024Krw--/lib/libkrb5.so.3.3
003ca000152Kr-x-/lib/libk5crypto.so.3.1
003f00004Krw--/lib/libk5crypto.so.3.1
003f100092Kr-x-/usr/lib/libnssutil3.so
007380004Kr---/lib/libresolv-2.12.so
007390004Krw--/lib/libresolv-2.12.so
0073a0008Krw--[anon]
00825000120Kr-x-/lib/ld-2.12.so
008430004Kr---/lib/ld-2.12.so
008440004Krw--/lib/ld-2.12.so
0090d00032Kr-x-/lib/libwrap.so.0.7.6
009150004Krw--/lib/libwrap.so.0.7.6
00948000484Kr-x-/usr/sbin/sshd
009c10008Krw--/usr/sbin/sshd
009c300020Krw--[anon]
009e000092Kr-x-/lib/libpthread-2.12.so
009f70004Kr---/lib/libpthread-2.12.so
total8232K
多进程内存状态
我们可以检查多进程内存通过插入多个PID。加入多个PID中间使用空格分隔。
pmap 1013 1217 1118
扩展进程内存
[root@info~]#pmap-x1013
1013:/usr/sbin/sshd
AddressKbytesRSSDirtyModeMapping
001100001480920r-x-libcrypto.so.1.0.0
00282000808080rw--libcrypto.so.1.0.0
002960001284rw--[anon]
002990003600r-x-libkrb5support.so.0.1
002a2000444rw--libkrb5support.so.0.1
002a30001600r-x-libplc4.so
002a7000444rw--libplc4.so
002ab0008840r-x-libaudit.so.1.0.0
002c1000444r---libaudit.so.1.0.0
002c2000444rw--libaudit.so.1.0.0
002c300021640r-x-libgssapi_krb5.so.2.2
002f9000444rw--libgssapi_krb5.so.2.2
002fa00080840r-x-libkrb5.so.3.3
003c4000242424rw--libkrb5.so.3.3
003ca00015240r-x-libk5crypto.so.3.1
003f0000444rw--libk5crypto.so.3.1
003f10009200r-x-libnssutil3.so
00408000121212rw--libnssutil3.so
0040b0001200r-x-libplds4.so
0040e000444rw--libplds4.so
---------------
totalkB8232---
这里的Address,Kbyte,Dirty,RSS,mode还有mapping的说明如下
扩展和设备格式区域
Address: 内存开始地址
Kbytes: 占用内存的字节数(KB)
RSS: 保留内存的字节数(KB)
Dirty: 脏页的字节数(包括共享和私有的)(KB)
Mode: 内存的权限:read、write、execute、shared、private (写时复制)
Mapping: 占用内存的文件、或[anon](分配的内存)、或[stack](堆栈)
Offset: 文件偏移
Device: 设备名 (major:minor)