在Linux中查找进程的内存使用情况

时间:2014-03-07 21:55:20

标签: linux bash

我正在尝试查找特定进程的当前内存使用情况。到目前为止,我在网上找到的每本指南都说明了如何将使用率作为总内存的百分比。我希望thr process'ram usae作为离散值(即以兆字节为单位)。

5 个答案:

答案 0 :(得分:6)

要仅获取一个感兴趣的内存使用次数,请尝试:

 ps -o rss= $pid   # resident set in kbytes; e.g., 2461016
 ps -o vsz= $pid   # virtual size in kbytes; e.g., 1048

要转换为MB(四舍五入为整数,根据需要调整),请尝试类似:

ps -o rss= $pid | awk '{printf "%.0f\n", $1 / 1024}' # e.g., 1

答案 1 :(得分:1)

如果您知道进程ID:

cat /proc/$pid/status

如果您想要在流程中使用:

cat /proc/self/status # or read the file with fopen() or whatnot

将输出如下内容:

# cat /proc/7049/status
Name:   bash
State:  S (sleeping)
Tgid:   7049
Pid:    7049
PPid:   7042
TracerPid:      0
Uid:    500     500     500     500
Gid:    500     500     500     500
Utrace: 0
FDSize: 256
Groups: 10 500
VmPeak:   108524 kB
VmSize:   108492 kB
VmLck:         0 kB
VmHWM:      2080 kB
VmRSS:      2072 kB
VmData:      532 kB
VmStk:        88 kB
VmExe:       848 kB
VmLib:      1876 kB
VmPTE:        60 kB
VmSwap:        0 kB
Threads:        1
SigQ:   0/14888
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed:   1
Cpus_allowed_list:      0
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        164
nonvoluntary_ctxt_switches:     4

Vm*字段包含您寻找的信息。

注意:这种格式的确切格式可能从发行版到发行版有所不同。

或者更简单:

ps up $pid

其中包括:

# ps up 7049
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
stack     7049  0.0  0.1 108492  2072 pts/0    Ss   20:23   0:00 -bash

答案 2 :(得分:0)

您可能希望了解virtual memory使用的address spaceprocess,例如C memory management malloc(3)(即mmap(2)等...)正在消耗(并释放)虚拟内存(使用proc(5)等获得...)。

然后你应该使用/proc/文件系统(参见pmap(1) ....)。特别是,对于pid 1234的处理,请尝试cat /proc/1234/mapscat /proc/1234/status。另请参阅ASLR并尝试pmap 1234

BTW,/proc/是内核提供有关进程信息的方式(以及大多数系统状态;另请参阅/sys/)。特别是,pstoppmaphtop都在使用/proc/

FWIW,我使用zsh作为我的交互式shell,这是cat /proc/$$/maps给我的内容:

 00400000-004a5000 r-xp 00000000 08:01 2883633                            /bin/zsh5
 006a4000-006a5000 r--p 000a4000 08:01 2883633                            /bin/zsh5
 006a5000-006ab000 rw-p 000a5000 08:01 2883633                            /bin/zsh5
 006ab000-006bf000 rw-p 00000000 00:00 0 
 01e5c000-01faf000 rw-p 00000000 00:00 0                                  [heap]
 7f2fa1533000-7f2fa1564000 rw-p 00000000 00:00 0 
 7f2fa1564000-7f2fa1574000 r-xp 00000000 08:01 1049819                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/computil.so
 7f2fa1574000-7f2fa1773000 ---p 00010000 08:01 1049819                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/computil.so
 7f2fa1773000-7f2fa1774000 r--p 0000f000 08:01 1049819                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/computil.so
 7f2fa1774000-7f2fa1775000 rw-p 00010000 08:01 1049819                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/computil.so
 7f2fa1775000-7f2fa1785000 rw-p 00000000 00:00 0 
 7f2fa1785000-7f2fa1788000 r-xp 00000000 08:01 1049839                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/rlimits.so
 7f2fa1788000-7f2fa1988000 ---p 00003000 08:01 1049839                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/rlimits.so
 7f2fa1988000-7f2fa1989000 r--p 00003000 08:01 1049839                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/rlimits.so
 7f2fa1989000-7f2fa198a000 rw-p 00004000 08:01 1049839                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/rlimits.so
 7f2fa198a000-7f2fa19c0000 rw-p 00000000 00:00 0 
 7f2fa19c0000-7f2fa19c3000 r-xp 00000000 08:01 1049830                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/stat.so
 7f2fa19c3000-7f2fa1bc2000 ---p 00003000 08:01 1049830                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/stat.so
 7f2fa1bc2000-7f2fa1bc3000 r--p 00002000 08:01 1049830                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/stat.so
 7f2fa1bc3000-7f2fa1bc4000 rw-p 00003000 08:01 1049830                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/stat.so
 7f2fa1bc4000-7f2fa1bcd000 r-xp 00000000 08:01 1055723                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/parameter.so
 7f2fa1bcd000-7f2fa1dcd000 ---p 00009000 08:01 1055723                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/parameter.so
 7f2fa1dcd000-7f2fa1dce000 r--p 00009000 08:01 1055723                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/parameter.so
 7f2fa1dce000-7f2fa1dcf000 rw-p 0000a000 08:01 1055723                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/parameter.so
 7f2fa1dcf000-7f2fa1dd6000 r-xp 00000000 08:01 1056697                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zutil.so
 7f2fa1dd6000-7f2fa1fd5000 ---p 00007000 08:01 1056697                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zutil.so
 7f2fa1fd5000-7f2fa1fd6000 r--p 00006000 08:01 1056697                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zutil.so
 7f2fa1fd6000-7f2fa1fd7000 rw-p 00007000 08:01 1056697                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zutil.so
 7f2fa1fd7000-7f2fa1ff9000 r-xp 00000000 08:01 1049816                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/complete.so
 7f2fa1ff9000-7f2fa21f9000 ---p 00022000 08:01 1049816                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/complete.so
 7f2fa21f9000-7f2fa21fa000 r--p 00022000 08:01 1049816                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/complete.so
 7f2fa21fa000-7f2fa21fb000 rw-p 00023000 08:01 1049816                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/complete.so
 7f2fa21fb000-7f2fa21fc000 rw-p 00000000 00:00 0 
 7f2fa21fc000-7f2fa223d000 r-xp 00000000 08:01 1049825                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zle.so
 7f2fa223d000-7f2fa243d000 ---p 00041000 08:01 1049825                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zle.so
 7f2fa243d000-7f2fa243e000 r--p 00041000 08:01 1049825                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zle.so
 7f2fa243e000-7f2fa2445000 rw-p 00042000 08:01 1049825                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/zle.so
 7f2fa2445000-7f2fa2446000 rw-p 00000000 00:00 0 
 7f2fa2446000-7f2fa2448000 r-xp 00000000 08:01 1055724                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/terminfo.so
 7f2fa2448000-7f2fa2647000 ---p 00002000 08:01 1055724                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/terminfo.so
 7f2fa2647000-7f2fa2648000 r--p 00001000 08:01 1055724                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/terminfo.so
 7f2fa2648000-7f2fa2649000 rw-p 00002000 08:01 1055724                    /usr/lib/x86_64-linux-gnu/zsh/5.0.5/zsh/terminfo.so
 7f2fa2649000-7f2fa2655000 r-xp 00000000 08:01 4985164                    /lib/x86_64-linux-gnu/libnss_files-2.18.so
 7f2fa2655000-7f2fa2854000 ---p 0000c000 08:01 4985164                    /lib/x86_64-linux-gnu/libnss_files-2.18.so
 7f2fa2854000-7f2fa2855000 r--p 0000b000 08:01 4985164                    /lib/x86_64-linux-gnu/libnss_files-2.18.so
 7f2fa2855000-7f2fa2856000 rw-p 0000c000 08:01 4985164                    /lib/x86_64-linux-gnu/libnss_files-2.18.so
 7f2fa2856000-7f2fa2860000 r-xp 00000000 08:01 4985173                    /lib/x86_64-linux-gnu/libnss_nis-2.18.so
 7f2fa2860000-7f2fa2a5f000 ---p 0000a000 08:01 4985173                    /lib/x86_64-linux-gnu/libnss_nis-2.18.so
 7f2fa2a5f000-7f2fa2a60000 r--p 00009000 08:01 4985173                    /lib/x86_64-linux-gnu/libnss_nis-2.18.so
 7f2fa2a60000-7f2fa2a61000 rw-p 0000a000 08:01 4985173                    /lib/x86_64-linux-gnu/libnss_nis-2.18.so
 7f2fa2a61000-7f2fa2a76000 r-xp 00000000 08:01 4985159                    /lib/x86_64-linux-gnu/libnsl-2.18.so
 7f2fa2a76000-7f2fa2c75000 ---p 00015000 08:01 4985159                    /lib/x86_64-linux-gnu/libnsl-2.18.so
 7f2fa2c75000-7f2fa2c76000 r--p 00014000 08:01 4985159                    /lib/x86_64-linux-gnu/libnsl-2.18.so
 7f2fa2c76000-7f2fa2c77000 rw-p 00015000 08:01 4985159                    /lib/x86_64-linux-gnu/libnsl-2.18.so
 7f2fa2c77000-7f2fa2c79000 rw-p 00000000 00:00 0 
 7f2fa2c79000-7f2fa2c80000 r-xp 00000000 08:01 4985166                    /lib/x86_64-linux-gnu/libnss_compat-2.18.so
 7f2fa2c80000-7f2fa2e7f000 ---p 00007000 08:01 4985166                    /lib/x86_64-linux-gnu/libnss_compat-2.18.so
 7f2fa2e7f000-7f2fa2e80000 r--p 00006000 08:01 4985166                    /lib/x86_64-linux-gnu/libnss_compat-2.18.so
 7f2fa2e80000-7f2fa2e81000 rw-p 00007000 08:01 4985166                    /lib/x86_64-linux-gnu/libnss_compat-2.18.so
 7f2fa2e81000-7f2fa2e85000 r-xp 00000000 08:01 4980783                    /lib/x86_64-linux-gnu/libattr.so.1.1.0
 7f2fa2e85000-7f2fa3084000 ---p 00004000 08:01 4980783                    /lib/x86_64-linux-gnu/libattr.so.1.1.0
 7f2fa3084000-7f2fa3085000 r--p 00003000 08:01 4980783                    /lib/x86_64-linux-gnu/libattr.so.1.1.0
 7f2fa3085000-7f2fa3086000 rw-p 00004000 08:01 4980783                    /lib/x86_64-linux-gnu/libattr.so.1.1.0
 7f2fa3086000-7f2fa3226000 r-xp 00000000 08:01 4985168                    /lib/x86_64-linux-gnu/libc-2.18.so
 7f2fa3226000-7f2fa3425000 ---p 001a0000 08:01 4985168                    /lib/x86_64-linux-gnu/libc-2.18.so
 7f2fa3425000-7f2fa3429000 r--p 0019f000 08:01 4985168                    /lib/x86_64-linux-gnu/libc-2.18.so
 7f2fa3429000-7f2fa342b000 rw-p 001a3000 08:01 4985168                    /lib/x86_64-linux-gnu/libc-2.18.so
 7f2fa342b000-7f2fa342f000 rw-p 00000000 00:00 0 
 7f2fa342f000-7f2fa3530000 r-xp 00000000 08:01 4985165                    /lib/x86_64-linux-gnu/libm-2.18.so
 7f2fa3530000-7f2fa3730000 ---p 00101000 08:01 4985165                    /lib/x86_64-linux-gnu/libm-2.18.so
 7f2fa3730000-7f2fa3731000 r--p 00101000 08:01 4985165                    /lib/x86_64-linux-gnu/libm-2.18.so
 7f2fa3731000-7f2fa3732000 rw-p 00102000 08:01 4985165                    /lib/x86_64-linux-gnu/libm-2.18.so
 7f2fa3732000-7f2fa3757000 r-xp 00000000 08:01 4980894                    /lib/x86_64-linux-gnu/libtinfo.so.5.9
 7f2fa3757000-7f2fa3957000 ---p 00025000 08:01 4980894                    /lib/x86_64-linux-gnu/libtinfo.so.5.9
 7f2fa3957000-7f2fa395b000 r--p 00025000 08:01 4980894                    /lib/x86_64-linux-gnu/libtinfo.so.5.9
 7f2fa395b000-7f2fa395c000 rw-p 00029000 08:01 4980894                    /lib/x86_64-linux-gnu/libtinfo.so.5.9
 7f2fa395c000-7f2fa395f000 r-xp 00000000 08:01 4985160                    /lib/x86_64-linux-gnu/libdl-2.18.so
 7f2fa395f000-7f2fa3b5e000 ---p 00003000 08:01 4985160                    /lib/x86_64-linux-gnu/libdl-2.18.so
 7f2fa3b5e000-7f2fa3b5f000 r--p 00002000 08:01 4985160                    /lib/x86_64-linux-gnu/libdl-2.18.so
 7f2fa3b5f000-7f2fa3b60000 rw-p 00003000 08:01 4985160                    /lib/x86_64-linux-gnu/libdl-2.18.so
 7f2fa3b60000-7f2fa3b64000 r-xp 00000000 08:01 4980821                    /lib/x86_64-linux-gnu/libcap.so.2.22
 7f2fa3b64000-7f2fa3d63000 ---p 00004000 08:01 4980821                    /lib/x86_64-linux-gnu/libcap.so.2.22
 7f2fa3d63000-7f2fa3d64000 rw-p 00003000 08:01 4980821                    /lib/x86_64-linux-gnu/libcap.so.2.22
 7f2fa3d64000-7f2fa3d84000 r-xp 00000000 08:01 4985158                    /lib/x86_64-linux-gnu/ld-2.18.so
 7f2fa3d85000-7f2fa3d91000 rw-p 00000000 00:00 0 
 7f2fa3d91000-7f2fa3f59000 r--p 00000000 08:01 7083454                    /usr/lib/locale/locale-archive
 7f2fa3f59000-7f2fa3f5e000 rw-p 00000000 00:00 0 
 7f2fa3f60000-7f2fa3f70000 rw-p 00000000 00:00 0 
 7f2fa3f72000-7f2fa3f7a000 rw-p 00000000 00:00 0 
 7f2fa3f7a000-7f2fa3f81000 r--s 00000000 08:01 7112364                    /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
 7f2fa3f81000-7f2fa3f83000 rw-p 00000000 00:00 0 
 7f2fa3f83000-7f2fa3f84000 r--p 0001f000 08:01 4985158                    /lib/x86_64-linux-gnu/ld-2.18.so
 7f2fa3f84000-7f2fa3f85000 rw-p 00020000 08:01 4985158                    /lib/x86_64-linux-gnu/ld-2.18.so
 7f2fa3f85000-7f2fa3f86000 rw-p 00000000 00:00 0 
 7ffff69af000-7ffff69d0000 rw-p 00000000 00:00 0                          [stack]
 7ffff69fe000-7ffff6a00000 r-xp 00000000 00:00 0                          [vdso]
 ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

另请阅读Advanced Linux Programming并阅读{{3}}。

答案 3 :(得分:0)

您可以使用

ps aux --sort=%mem,%cpu

按内存排序对所有正在运行的进程进行排序& CPU使用率。

如果您想限制从当前终端运行的进程:

ps v

如果您知道使用pid:

ps v <pid>

示例输出:

PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
36626  pts/3 A     0:00    0   316   408 32768    51    60  0.0  0.0 ps v

,其中

PGIN 的 页面错误导致的页面调入次数。由于所有I / O都被归类为页面错误,因此这基本上是I / O容量的度量。

尺寸的 虚拟大小(在调页空间中),以进程数据部分的千字节为单位(由其他标志显示为SZ)。此数字等于已触摸的进程的工作段页面数量的时间4.如果某些工作段页面当前已被页面调出,则此数字大于正在使用的实际内存量。 SIZE包括私有段中的页面和进程的共享库数据段。

RSS 的 实际内存(驻留集)大小(以KB为单位)。此数字等于内存中工作段和代码段页面数的总和4.请记住,代码段页面在所有当前正在运行的程序实例之间共享。如果正在运行26个ksh进程,则只有ksh可执行程序的任何给定页面的一个副本将在内存中,但ps命令将报告该代码段大小作为ksh程序的每个实例的RSS的一部分。

TSIZ 的 文本大小(共享程序)图像。这是可执行文件的文本部分的大小。可执行程序的文本部分的页面仅在被触摸时被带入存储器,即分支到或从中加载。此数字仅表示可以加载的文本量的上限。 TSIZ值不反映实际内存使用情况。通过对可执行程序执行dump -ov命令也可以看到此TSIZ值(例如,dump -ov / usr / bin / ls)。

TRS 的 文本的驻留集(实际内存)的大小。这是代码段页面的数量乘以4.此数字夸大了运行多个实例的程序的内存使用。 TRS值可以高于TSIZ值,因为其他页面可能包含在代码段中,例如XCOFF头和加载器部分。

%MEM 的 计算为内存中工作段和代码段页面的数量之和4(即RSS值)除以正在使用的实际内存的大小,在机器中以KB为单位,乘以100,四舍五入为最近的完整百分点。此值试图传达进程使用的实内存的百分比。遗憾的是,与RSS一样,它往往夸大了与其他流程共享程序文本的流程的成本。此外,舍入到最接近的百分点导致系统中具有低于实际存储器大小的0.005倍的RSS值的所有过程具有0.0%的%MEM。

答案 4 :(得分:-1)

在终端中,您可以运行top。它将为您提供每个进程的内存使用量的KiloByte表示。您甚至可以使用grep制作某个流程的快照。的使用。