简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析【转】
转自:https://blog.csdn.net/sctq8888/article/details/7398776
转载自:http://hi.baidu.com/deep_pro/blog/item/5a9d5b9487b23314d31b7079.html 简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析 * cmdline: 启动进程的命令和参数。
* cwd: 指向进程当前目录的一个连接。
* environ: 进程所有的环境变量。
* fd: 进程所有打开的文件描述符,目录下是一个个以数字为名称的连接,指向了进程当前正在使用的文件。
* maps, statm, mem: 进程的内存信息。
* stat, status: 进程的状态信息,比如查看 /proc/status 中是否含有 “Zombie”字样,来查看僵尸进程。 几乎看什么内核漏洞分析之类的文章,第一眼都是被 cat /proc/{pid}/maps
产生的一堆奇怪的信息唬住了,都不敢往下看
居然没有搜到关于它们的详细介绍,旁边也没有表头什么的解释信息
那就我来整理一下吧,方便后人 ls /proc 能看到一些数字命名的文件夹,这个就不多说了,什么pid、fd的知识还是容易弄到的
拿init开刀,
[root@localhost proc]# cat /proc//statm 很简单地返回7组数字,每一个的单位都是一页 (常见的是4KB)
分别是
size:任务虚拟地址空间大小
Resident:正在使用的物理内存大小
Shared:共享页数
Trs:程序所拥有的可执行虚拟内存大小
Lrs:被映像倒任务的虚拟内存空间的库的大小
Drs:程序数据段和用户态的栈的大小
dt:脏页数量 接下来看看maps
[root@localhost proc]# cat /proc//maps
- r-xp : [vdso]
0032b000- r-xp fd: /lib/ld-2.8.so
- r--p 0001c000 fd: /lib/ld-2.8.so
- rw-p 0001d000 fd: /lib/ld-2.8.so
0034b000-004ae000 r-xp fd: /lib/libc-2.8.so
004ae000-004b0000 r--p fd: /lib/libc-2.8.so
004b0000-004b1000 rw-p fd: /lib/libc-2.8.so
004b1000-004b4000 rw-p 004b1000 :
- r-xp fd: /sbin/init
- rw-p 0001e000 fd: /sbin/init
08b42000-08b6a000 rw-p 08b42000 : [heap]
b8046000-b8048000 rw-p b8046000 :
bfb4e000-bfb63000 rw-p bffeb000 : [stack] 一共有6列
第一列代表内存段的虚拟地址
第二列代表执行权限,r,w,x不必说,p=私有 s=共享
不用说,heap和stack段不应该有x,否则就容易被xx,不过这个跟具体的版本有关
第三列代表在进程地址里的偏移量
第四列映射文件的主设备号和次设备号
通过 cat /proc/devices
得知fd是253 device-mapper 第五列映像文件的节点号,即inode 第六列是映像文件的路径
以前我很奇怪怎么会有两个相同的文件路径,原来
- r-xp fd: /sbin/init
- rw-p 0001e000 fd: /sbin/init
一个是只读的,是代码段,一个是读写的,是数据段
至于为什么共享库分成了三个
0034b000-004ae000 r-xp fd: /lib/libc-2.8.so
004ae000-004b0000 r--p fd: /lib/libc-2.8.so
004b0000-004b1000 rw-p fd: /lib/libc-2.8.so
其中的004ae000-004b0000 r--p fd: /lib/libc-2.8.so
还是不能理解 最后看看神秘的memmap
可惜不是所有的版本都有这个文件,如同我这里的情况
只有口头说一说了,memmap需要和maps配合看
显示出来的每一行代表maps里的一个段
每一行的每一个数字,代表那个段里的一个页,段有多大,一行就有对应的多少个数字 如果这个数字是0,代表系统为其分配了虚拟内存,但是没有分配物理内存
如果有数字,则代表系统为其分配了物理内存,以及有多少个进程引用了这个页
当然,不会有负数出现
简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析【转】的更多相关文章
- linux学习--查看操作系统版本及cpu及内存信息
查看版本当前操作系统内核信息 uname -a 查看当前操作系统版本信息 cat /proc/version 查看物理cpu个数: cat /proc/cpuinfo| grep "phy ...
- Linux ubuntu centos 下 grep显示前后几行信息
标准unix/linux下的grep通过下面参数控制上下文 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行grep -B 5 foo file 显示foo及前5 ...
- linux 在当前目录下查找一个,或者多个文件
1.find ./ -name "y*" 查找以y开头的文件. find ./ -name "*sql*" 查找包含 sql 的文件名 2.查找redis su ...
- Linux查看当前目录下文件名中包含指定字符的文件
find . -type f -name "edaijia* 结果:
- Linux中/proc目录下文件详解
转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...
- Linux中/proc目录下文件详解(转贴)
转载:http://www.sudu.cn/info/index.php?op=article&id=302529 Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...
- 从Docker在Linux和Windows下的区别简单理解Docker的层次结构
上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...
- linux 中/proc 详解
proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告 ...
- 比起Windows,怎样解读Linux的文件系统与目录结构?
比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...
随机推荐
- 第二个Sprint
能够实现三个数,两个操作符的四则运算.
- wc命令行程序
软件的需求分析 程序处理用户需求的模式为: wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数与程序交互,需实现的功能如下: 1.基本功能 支持 - ...
- 我的IT未来
关于IT这个行业,我是持欣赏态度的,毕竟发展很快,对人们生活的改变也很大,所以,作为一个从事IT的人士,我很自豪. 读了刘先生的文章,我发现以前自己做的太少了,虽然偶尔也会吐血写程序,但还是太少了.以 ...
- ElasticSearch 2 (36) - 信息聚合系列之显著项
ElasticSearch 2 (36) - 信息聚合系列之显著项 摘要 significant_terms(SigTerms)聚合与其他聚合都不相同.目前为止我们看到的所有聚合在本质上都是简单的数学 ...
- Week3_代码复审
软件工程师的成长 一口气看完了十多篇的博客,心里的感觉五味陈杂.既有对未来道路的憧憬,也有对自己目前水平的无力感,与那些在这个领域打拼十几年甚至几十年的前辈相比,我不过也就是刚刚迈过行业门槛一条腿而已 ...
- react & monaco editor & vs code
react & monaco editor & vs code monaco-editor https://microsoft.github.io/monaco-editor/inde ...
- Java之流的分类
Java I/O流分类:
- Django 高并发负载均衡
1 什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台 ...
- 学习Spring Boot:(十一) 自定义装配参数
前言 SpringMVC 中 Controller 中方法的参数非常灵活,得益于它的强大自动装配,这次将根据上次遗留下的问题,将研究下装配参数. 正文 SpringMVC中使用了两个接口来处理参数: ...
- 【转】如何应用Query语句进行规则的语法设置?
在Altium Designer中, 设计规则通常用来定义用户的设计需求. 这些规则涵盖了设计的方方面面, 从布线宽度, 对象的安全间距,内电层的连接风格, 过孔风格等等. 设计规则不仅能在PCB设计 ...