当前位置: 首页 > news >正文

Linux查看进程内存占用的六种方法

我这里整理了 6 种方式,应该足够用了吧,不够你可以再补充。

  • top 命令
  • ps 命令
  • smaps
  • pmap 命令
  • smem 命令
  • status

top

首先想到的肯定是 top 命令,直接输入 top 回车即可

输出参数介绍:

  • PID:进程的ID
  • USER:进程所有者
  • VIRT:进程占用的虚拟内存
  • RES:进程占用的物理内存
  • SHR:进程使用的共享内存
  • S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  • %CPU:进程占用CPU的使用率
  • %MEM:进程使用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值

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

显示的有整体内存占用情况和各个进程占用的内存情况。

ps

默认的 ps 不输出内存相关的内容,可以添加要显示的字段

1

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

  • -e 显示所有进程
  • -o 定制显示信息
  • pid 进程ID
  • comm 进程名
  • args 启动命令
  • pcpu 占用CPU 百分比
  • rsz 占用物理内存大小
  • vsz 占用虚拟内存大小
  • stime 进程启动时间
  • user 启动用户

RSZ: 954184 表示内存占用

更多操作指令,按内存排序

1

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

也可以使用--sort -rsz按 rsz 排序,效果一样

smaps

smaps 也是进程的一个属性,可以通过 cat smaps 获得

1

cat/proc/7576/smaps|grepRss |awk'{sum +=$2} END{print sum}'

需要将他们进行加起来

pmap

使用 pmap 也可以查看进程的详细内存占用情况

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

pmap -h

Usage:

pmap [options] PID [PID ...]

Options:

-x, --extended show details

-X show evenmoredetails

WARNING:formatchanges according to/proc/PID/smaps

-XX show everything the kernel provides

-c, --read-rcreadthe default rc

-C, --read-rc-from=<file>readthe rc fromfile

-n, --create-rc create new default rc

-N, --create-rc-to=<file> create new rc tofile

NOTE: pid arguments are not allowed with -n, -N

-d, --device show the deviceformat

-q, --quietdonot display header and footer

-p, --show-path show pathinthe mapping

-A, --range=<low>[,<high>] limit results to the given range

-h, --help display this help andexit

-V, --version output version information andexit

Formoredetails see pmap(1).

执行pmap -x pid可以查看详情

1

2

3

4

5

6

pmap -x 7576

7576:/usr/share/logstash/jdk/bin/java-Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true-Dfile.encoding=UTF-8 -Djdk.io.File.enableADS=true-Djruby.compile.invokedynamic=true-Djruby.jit.threshold=0 -Djruby.regexp.interruptible=true-XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/urandom-Dlog4j2.isThreadContextMapInheritable=true-cp/usr/share/logstash/logstash-core/lib/jars/animal-sniffer-annotations-1.14.jar:/

Address Kbytes RSS Dirty Mode Mapping

...............

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

total kB 3725156 626940 619032

RSS: 626940 即内存占用。

smem

一般系统没有自带,需要安装一下,根据你的系统选择合适的安装工具

1

2

3

4

apt-get update

apt-getinstall-y smem

smem --help

自带排序,直接输出排好序的数据,可以使用 -r 参数从大到小排列

1

2

smem

smem -r

status

Linux 中每个进程在 /proc 目录下都有对应的目录,其中某个进程目录下有一个 status 文件,通过 status 文件内容可以查看到当前占用资源的情况

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

cat/proc/7576/status

Name: java

Umask: 0022

State: S (sleeping)

Tgid: 7576

Ngid: 0

Pid: 7576

PPid: 1

TracerPid: 0

Uid: 0 0 0 0

Gid: 0 0 0 0

FDSize: 256

Groups: 0

VmPeak: 3724360 kB

VmSize: 3724360 kB

VmLck: 0 kB

VmPin: 0 kB

VmHWM: 638308 kB

VmRSS: 621528 kB

RssAnon: 613808 kB

RssFile: 7720 kB

RssShmem: 0 kB

VmData: 3524964 kB

VmStk: 136 kB

VmExe: 4 kB

VmLib: 22520 kB

VmPTE: 1604 kB

VmSwap: 0 kB

Threads: 34

SigQ: 0/14503

SigPnd: 0000000000000000

ShdPnd: 0000000000000000

SigBlk: 0000000000000000

SigIgn: 0000000000000000

SigCgt: 2000000181005ccf

CapInh: 0000000000000000

CapPrm: 00000000a80425fb

CapEff: 00000000a80425fb

CapBnd: 00000000a80425fb

CapAmb: 0000000000000000

Seccomp: 2

Speculation_Store_Bypass: vulnerable

Cpus_allowed: 3

Cpus_allowed_list: 0-1

Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001

Mems_allowed_list: 0

voluntary_ctxt_switches: 22

nonvoluntary_ctxt_switches: 29

VmRSS: 621528 kB 就表示占用的内存大小。

http://www.jsqmd.com/news/582063/

相关文章:

  • 2026年手摇密集柜/底图密集柜/智能密集柜厂家推荐:河北星屹智能科技有限公司 - 品牌推荐官
  • 9种字重完整覆盖:Outfit开源无衬线字体深度解析与实战配置指南
  • 销售全流程自动化,小太阳CRM替你盯流程、促成交
  • 打造终极极客玩物:在 Apple 芯片 Mac 上构建“即插即用”的便携比特币全节点
  • Ardyno库:Dynamixel伺服电机的嵌入式底层通信框架
  • 高斯光束的聚焦与准直MATLAB程序 根据《激光原理》有关内容,我们可以对高斯光束用透镜进行聚...
  • 2025 年度白刚玉定制口碑服务商榜单与品牌深度分析 - 深度智识库
  • 222. 如何更新 RKE2 集群中的默认 ingress-nginx 证书
  • 2026年全场景客服软件,多语言智能交互适配各类使用需求 - 品牌2026
  • 飞书开放平台集成实战指南:从需求分析到方案落地的全流程策略
  • 刚升职带团队,请老同事吃饭的正确方式
  • 【含文档+PPT+源码】基于Java的城市公交查询系统的设计与实现
  • 无细胞蛋白表达系统加速激酶药物研发:5天内实现从DNA到蛋白质表征 - 上海曼博生物
  • 创作者指南:2026年最佳伤感音乐素材下载平台TOP5 - Fzzf_23
  • 还在手动整理会议语音逐字稿?2026年这5款会议语音转文字系统,3分钟搞定2小时会议记录
  • 终极指南:如何彻底解决Cursor API限制问题,实现无限免费使用
  • 数组去重方法
  • AI革命VS人类危机?OpenClaw用技术给出答案
  • 基于大模型的生成式信息抽取:优势与实践路径
  • # 发散创新:Playwright 实战自动化测试新范式——从基础到高级技巧全解析在现代前端开发中,**浏览器自动
  • 2026年普通人创业副业全指南:零门槛稳赚项目盘点 - 格行官方招商总部
  • Gerbv:革新性PCB制造文件验证的开源解决方案
  • 2026年效率革命:方便面自动化抓取解决方案与品牌指南 - 品牌2026
  • BROADCOM博通集成 Matter 1.5平台认证就绪、BK7239N等芯片助力智能家居无缝融合
  • UniApp 小程序获取微信手机号完整笔记(Vue3 + TS)
  • 昇腾MindSpore实战经验分享:从入门到工业级部署的全方位指南
  • Graphormer开源模型教程:Python API调用app.py实现批量SMILES预测
  • 3分钟搭建你的微信智能管家:零代码实现24小时自动回复
  • 再做一个RAG 生成增强系统时,选Redis 还是 Milvus?
  • 2026年生鲜分拣升级:高效稳定果蔬机械手供应商推荐 - 品牌2026