linux下查询进程占用的内存方法总结

假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。linux命令行

下有很多的工具进行查看,现总结常见的几种方式:

通过进程的 status

[root@web3_u ~]# cat /proc/25282/statusName: php-cgi

State:S (sleeping)Tgid: 25282Pid: 25282PPid: 27187TracerPid: 0Uid: 99 99 99 99Gid: 99 99 99 99Utrace: 0FDSize: 256Groups: 99VmPeak: 496388kB

VmSize: 438284kB

VmLck: 0kB

VmHWM: 125468kB

VmRSS: 113612kB

VmData: 92588kB

VmStk: 100kB

VmExe: 6736kB

VmLib: 18760kB

VmPTE: 528kB

VmSwap: 0kB

Threads: 1SigQ: 0/46155SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: 0000000000000000SigIgn: 0000000000001000SigCgt: 0000000184000004CapInh: 0000000000000000CapPrm: 0000000000000000CapEff: 0000000000000000CapBnd: ffffffffffffffff

Cpus_allowed:f

Cpus_allowed_list: 0-3Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001Mems_allowed_list: 0voluntary_ctxt_switches: 68245nonvoluntary_ctxt_switches: 15751

VmRSS: 113612 kB 表示占用的物理内存

通过 pmap

[root@web3_u ~]# pmap -x 25282

25282: /usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf

Address Kbytes RSS Dirty Mode Mapping

0000000000400000 6736 2692 0 r-x-- php-cgi

0000000000c93000 264 196 120 rw--- php-cgi

0000000000cd5000 60 48 48 rw--- [ anon ]

. . .

00007fd6226bc000 4 4 4 rw--- ld-2.12.so

00007fd6226bd000 4 4 4 rw--- [ anon ]

00007fff84b02000 96 96 96 rw--- [ stack ]

00007fff84bff000 4 4 0 r-x-- [ anon ]

ffffffffff600000 4 0 0 r-x-- [ anon ]

---------------- ------ ------ ------

total kB 438284 113612 107960

关键信息点

进程ID

启动命令「/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/php-fpm.conf」

RSS :占用的物理内存 113612KB

通过 smaps

[root@web3_u ~]# cat /proc/25282/smaps | grep '^Rss:' \

| awk '{sum +=$2} END{print sum}'

113612

求和得到实际占用物理内存为 113612

通过 ps 命令

[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' \

| awk '$1 ~ /25282/'

25282 php-cgi /usr/local/php/bin/php-cgi 0.0 113612 438284 Oct09 nobody 99

awk 过滤 25282 进程号,得到第5列「rsz」的内存大小为「113612」

输出php-cgi进程占用的物理内存,并从高到低进行排序

[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' \

|grep php-cgi |sort -k5nr

输出结果

23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody 99

24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody 99

18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody 99

17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody 99

6996 php-cgi /usr/local/php/bin/php-cgi 0.0 124876 438104 Oct09 nobody 99

23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody 99

28310 php-cgi /usr/local/php/bin/php-cgi 0.0 122920 436456 Oct09 nobody 99

其中rsz为实际内存,上例实现按内存排序,由大到小

TOP 命令输出的列

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

25282 nobody 20 0 428m 110m 93m S 0.0 1.9 0:34.42 php-cgi

输出列信息

PID 25282

用户 nobody

虚拟内存 428M

物理内存 110M 110*1024= 112640 「和前面计算出来的值基本一致」

共享内存 93M

进程使用的物理内存和总内存的百分比 1.9 %

PID:进程的ID

USER:进程所有者

PR:进程的优先级别,越小越优先被执行

NInice:值

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

COMMAND:进程启动命令名称

按P

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 0:33.15 redis-server

12934 root 20 0 8902m 8.6g1072 S 5.5 36.6 285:37.81 redis-server

969 root 20 0 0 0 0 D 4.2 0.0 277:14.85 flush-252:16

1304 root 23 3 1689m 50m3264 S 4.2 0.2 1445:03 xs-searchd

1294 root 20 0 14928 928 584 S 3.5 0.0 635:05.31 xs-indexd

1287 nobody 20 0 12884 772 576 S 2.8 0.0 833:11.42 dnsmasq

1302 root 23 3 1113m 39m3244 S 0.7 0.2 1437:57 xs-searchd

4444 www 20 0 280m 43m 884 S 0.7 0.2 27:43.92 nginx

1 root 20 0 192321160 868 S 0.0 0.0 0:06.75 init

按 P .表示按cpu排序,默认也是按cpu排序

按M

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

12934 root 20 0 8902m 8.6g 1072 S 6.0 36.6 285:39.77 redis-server

16036 root 20 0 8902m 8.6g 480 R 100.0 36.6 1:11.42 redis-server

1236 www 20 0 1053m 209m 6556 S 0.0 0.9 4:40.70 php-cgi

1231 www 20 0 1034m 146m 6536 S 0.0 0.6 4:20.82 php-cgi

1184 www 20 0 1043m 119m 6584 S 0.0 0.5 4:21.85 php-cgi

按M 。 表示按占用内存排序。 第一列 redis服务器占用了8.6G的内存 。 这个内存和redis info

[root@img1_u ~]# redis-cli info memory

# Memory

used_memory_human:8.32G

基本相同。

[root@img1_u ~]# top -u www

top - 22:09:01 up67 days, 14:16, 1 user, load average: 0.61, 0.90, 0.98

Tasks:283 total, 2 running,281 sleeping, 0 stopped, 0 zombie

Cpu(s): 3.9%us, 1.0%sy, 0.5%ni, 89.7%id, 4.6%wa, 0.0%hi, 0.3%si, 0.0%st

Mem: 24542176k total, 21130060k used, 3412116k free, 1750652k buffers

Swap: 524280k total, 0k used, 524280k free, 4039732k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

681 www 20 0 855m 25m5796 S 0.0 0.1 0:47.00 php-cgi

1181 www 20 0 887m 57m6484 S 0.0 0.2 4:41.66 php-cgi

1183 www 20 0 864m 34m6320 S 0.0 0.1 3:52.39 php-cgi

1184 www 20 0 1043m 119m6584 S 0.0 0.5 4:21.85 php-cgi

1185 www 20 0 869m 39m6376 S 0.0 0.2 3:57.84 php-cgi

1186 www 20 0 886m 56m6244 S 0.0 0.2 3:44.75 php-cgi

1187 www 20 0 926m 66m6480 S 0.0 0.3 4:16.12 php-cgi

1188 www 20 0 890m 60m6288 S 0.0 0.3 4:13.35 php-cgi

1189 www 20 0 892m 62m6408 S 0.0 0.3 4:06.60 php-cgi

-u 指定用户。 php-cgi占用的内存在60M左右

按进程消耗内存多少排序的方法

通过 ps 命令

第一种方法

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | sort -k5nr

第二种方法

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' --sort -rsz

输出结果

[root@web3_u ~]# ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user' | sort -k5nr

23946 php-cgi /usr/local/php/bin/php-cgi 0.0 129540 440000 Oct06 nobody

24418 php-cgi /usr/local/php/bin/php-cgi 0.0 129336 437684 Oct06 nobody

18973 php-cgi /usr/local/php/bin/php-cgi 0.0 129268 440176 Oct06 nobody

17219 php-cgi /usr/local/php/bin/php-cgi 0.0 126588 439840 Oct06 nobody

6996 php-cgi /usr/local/php/bin/php-cgi 0.0 125056 438104 Oct09 nobody

23850 php-cgi /usr/local/php/bin/php-cgi 0.0 122984 440036 Oct09 nobody

参数解析:

-e 显示所有进程

-o 定制显示信息

pid 进程ID

comm 进程名

args 启动命令

pcpu 占用CPU 百分比

rsz 占用物理内存大小

vsz 占用虚拟内存大小

stime 进程启动时间

user 启动用户

以第一行为例

进程ID 23946

进程名 php-cgi

启动命令 /usr/local/php/bin/php-cgi

占用CPU 0

占用物理内存 129540

占用虚拟内存 440000

启动时间 Oct06

启动用户 nobody

ps 命令

通过 top 命令

top命令默认是以CPU排序输出的,按字母「M」,可以按内存占用大小进行排序显示

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

23946 nobody 20 0 429m 126m 107m S 0.0 2.2 1:15.01 php-cgi

24418 nobody 20 0 427m 126m 109m S 0.0 2.2 1:19.56 php-cgi

18973 nobody 20 0 429m 126m 107m S 0.0 2.2 1:20.18 php-cgi

17219 nobody 20 0 429m 123m 104m S 0.0 2.1 1:23.60 php-cgi

6996 nobody 20 0 427m 122m 105m S 0.0 2.1 1:05.27 php-cgi

23850 nobody 20 0 429m 120m 101m S 0.0 2.1 1:02.43 php-cgi

输出参数介绍

PID:进程的ID

USER:进程所有者

VIRT:进程占用的虚拟内存

RES:进程占用的物理内存

SHR:进程使用的共享内存

S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数

%CPU:进程占用CPU的使用率

%MEM:进程使用的物理内存和总内存的百分比

TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。

linux 释放进程res_linux下查询进程占用的内存方法总结相关推荐

  1. linux查看native进程,Android 分析应用程序占用native内存

    Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小:然而Native 内存并不能在虚拟堆上看到:Android系统基于Linux,这样的话其具备Linux的大多数特性: ...

  2. Linux Shell脚本专栏_找出占用CPU/内存过高的进程_05

    文章目录 找出占用CPU/内存过高的进程 1. 脚本 2. 运行脚本 3. 效果图 找出占用CPU/内存过高的进程 1. CPU 过高的进程2. 内存 过高的进程 1. 脚本 #/bin/bash e ...

  3. 结束拒绝访问的进程 cmd下结束进程 强行结束进程

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

  4. 结束拒绝访问的进程 cmd下结束进程 强行结束进程 1

    结束拒绝访问的进程 有些病毒和恶意进程我们在任务管理器里面是不能结束的,这个时候,如果又没有工具,就很麻烦了,今天看网管员世界,提到了一种方法,能够解决: 根本的思想是用system的权限来运行tas ...

  5. static在内存层面的作用_虚拟地址空间--用户进程看到的自己所占用的内存

    我们知道内核管理物理内存,其实除了管理本身内存外,还必须管理用户空间中进程的内存,我们称这个内存为进程地址空间,也就是系统中每个用户空间进程所看到的内存. 传统的C语言编译出来的进程地址空间包含哪些对 ...

  6. linux 查看整个根目录下各个文件占用情况

    su root 切换到root用户下,输入密码即可切换到当前用户下 df -h 命令查看磁盘空间 du -ah --max-depth=1  /    查看根目录下各个文件占用情况,max-depth ...

  7. java 创建进程_Linux下创建进程简介

    进程创建的UNIX模型为分叉----执行(fork----exec)模型.fork函数调用生成一个完全复制父进程内存的子进程.exec函数调用以一个新的可执行文件替换当前进程.这两个调用通常一起使用, ...

  8. linux卸载minicom,ubuntu下minicom超级终端的使用方法

    ubuntu下minicom超级终端的使用方法 我的系统环境是ubuntu12.04 www.2cto.com 1:下载安装minicom #sudo    apt-get   install   m ...

  9. linux下怎么查kill某个进程,Linux下查询进程PS或者杀死进程kill的小技巧

    假设我们要kill掉tomcat: 那么我们首先需要tomcat的进程号pid: ps -aux | grep tomcat 记下tomcat的PID后,执行:kill PID(tomcat) 好了, ...

最新文章

  1. mysql binlog 丢失_mysql数据库binlog丢失引起的问题
  2. ConditionedActivityGroup
  3. JeecgBoot 2.x版本SQL漏洞补丁发布——响应零日漏洞修复计划
  4. 接口测试--apipost在json中如何使用mock变量
  5. 所有赚不到钱的人都是干了自己不愿意或者自己很讨厌的事
  6. android多击事件_Android中的多击事件
  7. pytorch macos_Windows,Linux和MacOS上的PyTorch安装
  8. powerdesigner数据字典导出模板设置
  9. Louvain 算法的核心思路以及数据结构(最完善版)
  10. AForge Video
  11. linux vm使用物理磁盘,vmware使用整个物理硬盘做虚拟机的注意事项
  12. java 黑盒测试_关于黑盒测试的总结
  13. frontend -- 框架
  14. android 指纹比对方法,指纹识别功能方面对比_手机Android频道-中关村在线
  15. 跳出“画地为牢”的陷阱:更加明智地规划职业发展
  16. 智禾教育:现在入局电商行业算晚吗,行业前景将会如何发展
  17. Java DES 加密解密
  18. 为什么亿级数据量时要使用位图?位图和布隆过滤器有什么关系?
  19. vb6.0实现生成不重复的随机整数并排序输出
  20. 一个量化交易策略师的自

热门文章

  1. Hadoop记录-hadoop2.x常用端口及定义方法
  2. java内存管理之内存模型
  3. hihoCoder 1014trie树(字典树)
  4. 经典中的品味:第二章 C++基本的对象,类型和值(上)
  5. 关于plsql查询中文字符编码问题
  6. LINQ学习之旅——再次拾起
  7. 3-算法 鸡兔同笼 简单逻辑
  8. python创建控件,用 IronPython 创建和调用用户控件.doc
  9. 枚举算法:概率计算。在标注编号分别为1,2,...,n的n张牌中抽取3张,试求抽出3张牌编号之和为素数的概率。输入整数n(3<n<=3000),输出对应的概率(四舍五入到小数点后第3位)。
  10. 微课|玩转Python轻松过二级(2.2.1节):算术运算符