转自: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 内存信息文件分析【转】的更多相关文章

  1. linux学习--查看操作系统版本及cpu及内存信息

    查看版本当前操作系统内核信息 uname -a 查看当前操作系统版本信息 cat  /proc/version 查看物理cpu个数: cat /proc/cpuinfo| grep "phy ...

  2. Linux ubuntu centos 下 grep显示前后几行信息

    标准unix/linux下的grep通过下面参数控制上下文 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行grep -B 5 foo file 显示foo及前5 ...

  3. linux 在当前目录下查找一个,或者多个文件

    1.find ./ -name "y*" 查找以y开头的文件. find ./ -name "*sql*" 查找包含 sql 的文件名 2.查找redis su ...

  4. Linux查看当前目录下文件名中包含指定字符的文件

    find . -type f -name "edaijia* 结果:

  5. Linux中/proc目录下文件详解

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  6. Linux中/proc目录下文件详解(转贴)

      转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...

  7. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  8. linux 中/proc 详解

    proc 文件系统 在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc 文件系统.最初设计的目的是允许更方便的对进程信息进行访问(因此得名),现在它被每一个有有趣的东西报告 ...

  9. 比起Windows,怎样解读Linux的文件系统与目录结构?

    比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...

随机推荐

  1. 用IDEA开发简单的Servlet

    最近学习java,主要是servlet相关的内容.IDEA和servlet之前都没有碰过,所以做了一下小实验,走了一些弯路:这里把一个完整的步骤写出来,加深一下印象. IDEA创建项目步骤 1. 在i ...

  2. 第一次spring,第三天。

    陈志棚:界面跳转与框架 李天麟:游戏界面ui 徐侃:算法代码的设计 由于队员要回家,我们讨论后,在校的队员先完成自己的任务,待回来的队员完成后在开会讨论,我们的最终结果.

  3. 组件 --BreadCrumb--面包屑

    面包屑组件多用于导航栏,对于大型网站,做面包屑导航栏 .breadcrumb .breadcrumb-item .active:表示现在正处在该页面 效果截图: 代码: <nav> < ...

  4. nodejs的事件驱动理解

    // 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events. ...

  5. Delphi中Form的position属性与代码自定义窗体位置

    通过Form的Position属性可设置窗体的初始位置,如选择DesktopCenter为桌面中心,ScreenCenter为屏幕中心,等等. 这个属性在很多时候简化了程序代码. 但是,如果设置了po ...

  6. 轻松学JVM

    轻松学JVM(一)——基本原理 前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM ...

  7. mysql主主同步设置

    mysql主主同步设置 主主同步设置是同等的地位,所以以下操作在两台机器上都需要进行而且操作是相同的. 服务器 服务器代号 IP hostname A 192.168.70.128 Debian1 B ...

  8. 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记

    读书笔记:<人生效率手册>:如何卓有成效地过好每一天--By张萌姐姐... 整本书看完的感受: 这本书主要讲的是生活中我们需要给自己一个目标,然后通过自己的努力去实现这个目标,书中说的很多 ...

  9. IE条件注释判断

    相信大家都知道IE有专门的注释条件判断来引入一些css.js.html代码,但是语法有点拗口,记不住,下面我来做一下笔记: 正常的html注释: <!--注释注释注释注释...--> 注释 ...

  10. python---django中序列化

    def get_data(req): ret = {'status':True,'data':None} try: user_list = models.User.objects.all() ret[ ...