写在最前面:在开始本文之前,笔者认为先有必要介绍一下linux下的man,如果读者手头用linux系统,直接在终端输入man man便可以看到详细的说明,我在这里简单的总结一下,man命令是用来查看linux下各种命令、工具等的用户手册(manual)的。一种比较常用的用法是”man n field”,这里的n是要查找的手册了类型,field是关键字。在这里介绍一下n:

  • 0 /usr/include下的头文件
  • 1 可执行程序和shell命令
  • 2 系统调用
  • 3 系统库函数
  • 4 /dev下的特殊文件
  • 5 文件格式和约定(比如/etc/passwd)
  • 6 游戏
  • 7 其它
  • 8 仅root可用的系统管理命令
  • 9 内核相关的内容

通常情况下,如果不加n的话,系统会按一定的顺序,有时候得到的可能不是你想要的,这时候就需要加上n了,这就是我要介绍n的目的。比如,你man printf,系统返回的肯定是shell命令printf,你要看库函数printf怎么办呢,那就man 3 printf,that’s ok 
      下面进入今天的正题,/proc是linux系统为我们用户提供的一个可以用来访问系统相关数据及信息的一个伪文件 系统,通过它我们不仅可以获取指定某个进程的相关信息,还可以获取系统整体的运行情况及信息。因为本文讲的是分析程序的工具,所以本文将侧重介绍通过/proc来分析程序本身,关于如何通过/proc来查看系统相关信息,可以通过man 5 proc来看(这也是我开始就讲man的一个原因  )。

  • /proc/[number]/cmdline 程序命令行参数,以’\0′分隔的字符串文件(在程序中,可以通过直接读此文件,获取程序的命令行参数,但不推荐这么做,这样做了程序的可移植性不好  )
  • /proc/[number]/cwd 程序的当前工作路径的软链接(readlink就可以得到被链接的目录)
  • /proc/[number]/environ 程序的当前环境变量,以’\0′分隔的字符串文件
  • /proc/[number]/exe 程序的可执行文件的软链接(通过readlink可以获取程序可执行文件的完整路径)
  • /proc/[number]/fd 程序当前正在使用的fd,这些fd都链向实际的文件
  • /proc/[number]/maps 程序的地址空间分布和访问权限(通过这些信息,可以查看进程的地址是否在合法的范围)
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  1. address perms offset dev inode pathname
  2. 08048000-08056000 r-xp 00000000 03:0c 64593 /usr/sbin/gpm
  3. 08056000-08058000 rw-p 0000d000 03:0c 64593 /usr/sbin/gpm
  4. 08058000-0805b000 rwxp 00000000 00:00 0
  5. 40000000-40013000 r-xp 00000000 03:0c 4165 /lib/ld-2.2.4.so
  6. 40013000-40015000 rw-p 00012000 03:0c 4165 /lib/ld-2.2.4.so
  7. 4001f000-40135000 r-xp 00000000 03:0c 45494 /lib/libc-2.2.4.so
  8. 40135000-4013e000 rw-p 00115000 03:0c 45494 /lib/libc-2.2.4.so
  9. 4013e000-40142000 rw-p 00000000 00:00 0
  10. bffff000-c0000000 rwxp 00000000 00:00 0
  • /proc/[number]/smaps (since Linux 2.6.14) 程序的每块内存映射区域的内存使用情况
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  1. 08048000-080bc000 r-xp 00000000 03:02 13130 /bin/bash #与maps中的相同
  2. Size: 464 kB #映射区的大小
  3. Rss: 424 kB #实际在内存中的大小
  4. Shared_Clean: 424 kB
  5. Shared_Dirty: 0 kB
  6. Private_Clean: 0 kB
  7. Private_Dirty: 0 kB
  • /proc/[number]/stat 程序的状态信息,ps命令得到的程序信息就是从此处获取的,因此详细的因容可以ps命令
  • /proc/[number]/statm 程序的内存页(page)状态
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  1. size total program size
  2. resident resident set size
  3. share shared pages
  4. text text (code)
  5. lib library
  6. data data/stack
  7. dt dirty pages (unused in Linux 2.6)
  • /proc/[number]/status stat和statm合起来的信息,以一种比较方便用户读的方式展示

linux程序分析工具介绍(一)—-”/proc”的更多相关文章

  1. Linux程序分析工具介绍—ldd,nm

    原文链接:http://blog.csdn.net/statdm/article/details/7759100 本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具.ldd是用来分析 ...

  2. linux程序分析工具介绍(二)—-ldd,nm

    本文要介绍的ldd和nm是linux下,两个用来分析程序很实用的工具.ldd是用来分析程序运行时需要依赖的动态库的工具:nm是用来查看指定程序中的符号表相关内容的工具.下面通过例子,分别来介绍一下这两 ...

  3. linux程序分析工具介绍(三)——sar

    本文要介绍的sar,是linux下用来分析系统本身运行情况的非常有用的工具.我们知道,程序在操作系统上要运行,要关注的点不外乎内存,CPU和IO(包括磁盘IO和网络IO).我们的应用程序在操作系统中运 ...

  4. Linux程序分析工具:ldd和nm

    ldd和nm是Linux下两个非常实用的程序分析工具.其中,ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具. 1 ldd 格式:ldd [option ...

  5. linux程序分析工具

    ldd和nm是Linux下两个非常实用的程序分析工具.ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具,objdump用来查看源代码与汇编代码,-d只查 ...

  6. (转)超全整理!Linux性能分析工具汇总合集

    超全整理!Linux性能分析工具汇总合集 原文:http://rdc.hundsun.com/portal/article/731.html 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望, ...

  7. Linux资源分析工具杂谈(长文慎入)

    Linux资源分析工具杂谈 开篇之前请大家先思考一个问题:        磁盘的平均I/O响应时间是1 ms,这个指标是好,还是差? 众所周知,计算机科学是客观的,也就是说对于一个给定的问题,我们总是 ...

  8. Linux 日志分析工具(logwatch)安装及使用

    Linux 日志分析工具(logwatch)安装及使用 日志是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态.但是日志管理又是一项非常枯燥的工作,如果需要管理 ...

  9. Linux 内存分析工具的命令大全介绍

    在Linux系统经常被用作服务器系统.当服务器内存吃紧的时候,free命令是我们最常使用的内存分析工具. free使用介绍# free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存, ...

随机推荐

  1. iOS开发:setNeedsLayOut和setNeedsDisplay区别

    1.layoutSubviews方法 1.1 根据苹果官方帮助文档对layoutSubviews方法的解释: 此方法用来重新定义子元素的位置和大小.当子类重写此方法,用来实现UI元素的更精确布局.如果 ...

  2. iOS开发之蓝牙使用-建立连接的

    1.大佬笔记 CSDN 2.代码 github

  3. day01.2-计算机网络协议

    注:本文摘自林海峰老师的博客,作为个人学习笔记,日后方便阅读,原文详见链接www.cnblogs.com/linhaifeng/articles/5937962.html 一.  ISO协议     ...

  4. Hadoop在ubuntu下安装配置文件及出现问题

    我的配置: 路径: hadoop /home/flyuz/hadoop jdk1.8.0_172 /opt/java/jdk1.8.0_172 eclipse /opt/eclipse 版本: ubu ...

  5. 浅谈《守望先锋》中的 ECS 构架

    https://blog.codingnow.com/2017/06/overwatch_ecs.html 今天读了一篇 <守望先锋>架构设计与网络同步 .这是根据 GDC 2017 上的 ...

  6. poj 1743 Musical Theme(最长重复子串 后缀数组)

    poj 1743 Musical Theme(最长重复子串 后缀数组) 有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复 ...

  7. P4768 [NOI2018]归程

    \(\color{#0066ff}{题目描述}\) 本题的故事发生在魔力之都,在这里我们将为你介绍一些必要的设定. 魔力之都可以抽象成一个 n 个节点.m 条边的无向连通图(节点的编号从 1 至 n) ...

  8. luogu4151 最大XOR和路径

    然后呢这道题其实很简单 我们先考虑一种简单的情况,从1直接走到n(不管怎么走的,反正就是走) 然后就能找到一个路径了 这个走的过程用各种zmj算法都能过 然后呢我们发现如果直接走基本不会得到最优解,考 ...

  9. 最小生成树算法 prim kruskal两种算法实现 HDU-1863 畅通工程

    最小生成树 通俗解释:一个连通图,可将这个连通图删减任意条边,仍然保持连通图的状态并且所有边权值加起来的总和使其达到最小.这就是最小生成树 可以参考下图,便于理解 原来的图: 最小生成树(蓝色线): ...

  10. Pandas基本功能详解

    Pandas基本功能详解 Pandas  Pandas基本功能详解 |轻松玩转Pandas(2) 参考:Pandas基本功能详解 |轻松玩转Pandas(2)