转:http://hi.baidu.com/sei_zhouyu/item/3ab5bc9fb2ea29c3b6253140

/proc/pid/是进程目录,存放的是当前运行进程的信息。

譬如apache进程 ls -al /proc/23597:

-r——–   1 root root 0 2009-05-26 15:00 auxv
-r–r–r–   1 root root 0 2009-05-26 02:03 cmdline
-r–r–r–   1 root root 0 2009-05-26 15:00 cpuset
lrwxrwxrwx   1 root root 0 2009-05-26 15:00 cwd -> /
-r——–   1 root root 0 2009-05-26 15:00 environ
lrwxrwxrwx   1 root root 0 2009-05-26 11:15 exe -> /usr/local/apache2/bin/httpd
dr-x——   2 root root 0 2009-05-11 10:15 fd
-rw——-   1 root root 0 2009-05-26 15:00 mapped_base
-r–r–r–   1 root root 0 2009-05-26 15:00 maps
-rw——-   1 root root 0 2009-05-26 15:00 mem
-r–r–r–   1 root root 0 2009-05-26 15:00 mounts
-rw-r–r–   1 root root 0 2009-05-26 15:00 oom_adj
-r–r–r–   1 root root 0 2009-05-26 15:00 oom_score
lrwxrwxrwx   1 root root 0 2009-05-26 15:00 root -> /
-rw——-   1 root root 0 2009-05-26 15:00 seccomp
-r–r–r–   1 root root 0 2009-05-26 15:00 smaps
-r–r–r–   1 root root 0 2009-05-26 02:03 stat
-r–r–r–   1 root root 0 2009-05-26 11:15 statm
-r–r–r–   1 root root 0 2009-05-26 03:00 status
dr-xr-xr-x   3 root root 0 2009-05-26 03:30 task
-r–r–r–   1 root root 0 2009-05-26 15:00 wchan

以上目录或文件,一个一个看:
auxv 二进制文件。auxv_t结构数组,包含进程执行时传递给动态链接器的初始值。

cmdline
进程启动的命令行参数。譬如一个带启动参数的进程,用cat
cmdline命令:./getstats./stats.cfg。看起来是不是没有格式?NO!用vi
cmdline查看内容是:./tiap_cstats^@./cstats.cfg^@。所以命令参数间是有间隔的,vi里看到的”^@”其实是字
符’\0′,用c++程序打印出来就可以很清楚的看到。

cpuset 不太清楚

environ 进程使用的环境变量信息。

exe 符号链接,指向进程的可执行文件。

fd 包含当前进程所有文件描述符的目录。
该目录下会发现1,2,3是被系统霸占的:
0
– 标准输入(standard input);1 – 标准输出(standard output);2 – 标准错误(standard
error)。从3开始系统自动分配给应用程序使用。若进程使用大量文件句柄(如TCP服务器),要特别关注这个目录下的句柄增长情况。系统默认最大允许
使用1024个句柄,文件句柄用完之后就会提示错误”too many open
files”。一般来说是出现了文件句柄泄漏,使用完之后没有close。如果需要更改最大句柄使用限制,使用ulimic -n命令,如:ulimit
-n 10240,从经验上来讲,对于提供tcp服务的进程,该设置是十分必要的。

mapped_base
该文件内容是一个地址,共享库将从该地址装载到内存。看到的内容是”1073741824″,转换成十六进制就是0×40000000,这就是默认值。可
以把这个值设置低一些,刘更多的内存给应用程序。DB2或Oracle安装有修改这个值的,让更多内存留给数据库共享内存使用,这样就有超过 2GB
的空间留给数据库共享内存。

maps 保存内存映象。从左到右是:和这个映射有关的地址空间,和这个映射有关的权限,距离文件开始(即这个映射开始的地方)的偏移量,这个映射文件所在的设备,文件的inode号,最后是文件名本身。
b7e31000-b7ee5000 r-xp 00000000 08:01 211854     /usr/lib/libstdc++.so.5.0.7
b7ee5000-b7eea000 rwxp 000b3000 08:01 211854     /usr/lib/libstdc++.so.5.0.7

mem 进程的内存被利用情况。用于某一应用程序在某些情况下可以方便的访问另一应用程序内存。其中之一访问内存的方法是直接使用mmap()映射页面。

mounts 文件内容是当前进程加载的文件系统。

oom_adj
oom_score 特殊用途,保护某个进程不被杀死。oom_adj的取值返回是-17~15,当进程的
oom_adj是-17时,系统将不会杀死它,-16到15使得进程的oom_score值呈指数(K * 2 ^
n)形式递增,也就是说他们被杀的可能性呈指数形式递增。如:echo -17 > oom_adj

root 链接此进程的root目录

seccomp 不太清楚。和安全相关?

smaps 是比maps更详细的内存映象信息。如中间一段:
b7e31000-b7ee5000 r-xp 00000000 08:01 211854     /usr/lib/libstdc++.so.5.0.7
Size:               720 kB
Rss:                 68 kB
Shared_Clean:        68 kB
Shared_Dirty:         0 kB
Private_Clean:        0 kB
Private_Dirty:        0 kB
b7e31000-b7ee5000
是该虚拟内存段的开始和结束位置;r-xp内存段的权限,最后一位p代表私有,s代表共享;00000000
该虚拟内存段在对应的映射文件中的偏移量;08:01文件的主设备和次设备号。211854被映射到虚拟内存的文件的索引节点号;
/usr/lib/libstdc++.so.5.0.7 被映射到虚拟内存的文件名称。
size是进程使用内存空间,并不一定实际分配了内
存;Rss是实际分配的内存;Shared_Clean和其他进程共享的未改写页面;Shared_Dirty和其他进程共享的已改写页
面;Private_Clean未改写的私有页面页面;Private_Dirty已改写的私有页面页面;其中Dirty页面如果没有交换机制的情况下,
应该是不能回收的。所有映射之和应该就是内存使用情况。更多:http://www.broncho.cn/forum
/viewtopic.php?f=20&p=1474&sid=906b9187b39d25cb95e0c7640398436d

Stat 进程状态。如:
6873
(a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3
0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0
2097798 0 0 0 0 0 0 0 17 0 0 0
各字段含义:
pid=6873 进程(包括轻量级进程,即线程)号
comm=a.out 应用程序或命令的名字
task_state=R
任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep
(TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead
ppid=6723 父进程ID
pgid=6873 线程组号
sid=6723 c该任务所在的会话组ID
tty_nr=34819(pts/3) 该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号
tty_pgrp=6873 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
task->flags=8388608 进程标志位,查看该任务的特性
min_flt=77 该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
cmin_flt=0 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
maj_flt=0 该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
cmaj_flt=0 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
utime=1587 该任务在用户态运行的时间,单位为jiffies
stime=1 该任务在核心态运行的时间,单位为jiffies
cutime=0 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime=0 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority=25 任务的动态优先级
nice=0 任务的静态优先级
num_threads=3 该任务所在的线程组里线程的个数
it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time=5882654 该任务启动的时间,单位为jiffies
vsize=1409024(page) 该任务的虚拟地址空间大小
rss=56(page) 该任务当前驻留物理地址空间的大小
Number of pages the process has in real memory,minu 3 for administrative purpose.
这些页可能用于代码,数据和栈。
rlim=4294967295(bytes) 该任务能驻留物理地址空间的最大值
start_code=134512640 该任务在虚拟地址空间的代码段的起始地址
end_code=134513720 该任务在虚拟地址空间的代码段的结束地址
start_stack=3215579040 该任务在虚拟地址空间的栈的结束地址
kstkesp=0 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip=2097798 指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
pendingsig=0 待处理信号的位图,记录发送给进程的普通信号
block_sig=0 阻塞信号的位图
sigign=0 忽略的信号的位图
sigcatch=082985 被俘获的信号的位图
wchan=0 如果该进程是睡眠状态,该值给出调度的调用点
nswap 被swapped的页数,当前没用
cnswap 所有子进程被swapped的页数的和,当前没用
exit_signal=17 该进程结束时,向父进程所发送的信号
task_cpu(task)=0 运行在哪个CPU上
task_rt_priority=0 实时进程的相对优先级别
task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程

statm 进程内存状态信息,该文件中的所有值都是从系统启动开始累计到当前时刻。如:654 57 44 0 0 334 0
各字段含义:
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数 0
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4
dt(pages) 0

status 进程当前状态,State,PID,UID,PPID等信息。这些信息可通过ps或top看到。

task 该目录列出了进程中所有线程(包括主线程)。每个线程目录下也有自己的fd等目录和文件。

wchan 不太清楚。

linux /proc/pid进程信息说明的更多相关文章

  1. 【Linux】 linux中的进程信息相关的一些内容

    _ linux进程信息 ■ top top命令用于动态地查看系统的进程和其他一些资源的信息.开启top的时候可以加上-t <sec>来设置top更新的频率高低.进入top界面之后,可以输入 ...

  2. Linux /proc/pid目录下各文件含义

    /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明/dev/kmem. /proc 里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. ( Linux 内核 ...

  3. Linux /proc/pid目录下文件的含义 (转)

    2013-01-16 16:10:36 分类: LINUX attr: 进程的属性 cmdline: 启动进程时执行的命令 cwd: 指向进程当前工作目录的软链 environ: 进程执行时使用的环境 ...

  4. Linux /proc/$pid部分内容详解

    auxv /proc/[pid]/auxv包含传递给进程的ELF解释器信息,格式是每一项都是一个unsigned long长度的ID加上一个unsigned long长度的值.最后一项以连续的两个0x ...

  5. Linux /proc/$pid部分内容详解【转】

    转自:https://www.cnblogs.com/likui360/p/6181927.html auxv /proc/[pid]/auxv包含传递给进程的ELF解释器信息,格式是每一项都是一个u ...

  6. Linux proc/pid/task/tid/stat文件详解

    [root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 419 ...

  7. Python标准库09 当前进程信息 (os包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux的概念与体系,多次提及进程的重要性.Python的os包中有查询和 ...

  8. Python标准库09 当前进程信息 (部分os包)

    原文:Python标准库09 当前进程信息 (部分os包) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux的概念 ...

  9. Linux中查看进程与日志

    转至:https://www.cnblogs.com/dengxiaoning/p/13336778.html Linux尽管使用频繁,仍然每次都还是需要到处去找相关的命令,如进程,日志之类的,既然这 ...

随机推荐

  1. 2、gitlab 新建项目

    一.创建项目 1.访问gitlab并登录 http://git.xh.com/ 2.点击 Projects -> Starred projects 每个版本的gitlab不太一样但位置都差不多 ...

  2. P1084 疫情控制

    Solution 二分答案, 尽量往上跳, 不能跳到根节点. 仍然能跳的拿出来.看剩下的点没有覆盖哪个? 贪心的分配一下. Code 70 #include<iostream> #incl ...

  3. HDU 2053 Switch Game(开灯问题,完全平方数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2053 题目大意:灯开始是关着的,有n盏灯,i从1数到n每当灯的序号是i的倍数的时候就对灯进行一次操作( ...

  4. Vue进阶篇

    前引 今天是2018年12月30,虽不是2018年的最后一天,但是却是自己在2018年写的最后一篇博客了,昨天下班在地铁上闲来无事,翻起了关注的一些公众号发的技术博文,里面就提到写博客的重要性,其实这 ...

  5. 三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法

    线性插值 先讲一下线性插值:已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值(反过来也是一样,略): y−y0x−x0=y1−y0x1−x ...

  6. EasyUi–7.tab和datagrid和iframe的问题

    1. 多个tab切换,第2个不显示 动态添加tab Iframe页面的方法 展开 折叠 <script type="text/javascript"> $(functi ...

  7. office 文档转pdf

    本地先安装 金山wps,并确保可用 工程目录 1.使用前,先执行install.bat 安装jacob 到maven本地仓库 2.复制 jacob-1.18-M2-x64.dlljacob-1.18- ...

  8. LeetCode 628. 三个数的最大乘积

    题目描述 LeetCode 628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例1 输入: [1,2,3] 输出: 6 示例2 输入: [1,2,3 ...

  9. Oracle 子查询和组函数练习

    SELECT * FROM emp; SELECT * FROM dept; 1.查询公司员工工资的最大值,最小值,平均值和总和. SELECT MAX(sal) AS 工资最大值, MIN(sal) ...

  10. 关于在vue里使用脚手架空行、空格会报错的问题

    第一种方法: 重新用脚手架安装项目,在命令行里选择Use ESLint to lint your code?这项是输入  n 第二种方法: 找到build文件夹下的 webpack.base.conf ...