0. 前言

/proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。

  • 它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。
  • 由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
root@jimmy-vm:/proc# ll /proc/
dr-xr-xr-x 9 root root 0 11月 28 20:09 <pid>/
......
dr-xr-xr-x 2 root root 0 11月 30 16:53 acpi/
dr-xr-xr-x 5 root root 0 11月 30 16:53 asound/
-r--r--r-- 1 root root 0 11月 30 16:53 buddyinfo
dr-xr-xr-x 4 root root 0 11月 30 16:53 bus/
-r--r--r-- 1 root root 0 11月 30 16:53 cgroups
-r--r--r-- 1 root root 0 11月 30 16:53 cmdline
-r--r--r-- 1 root root 0 11月 30 16:53 consoles
-r--r--r-- 1 root root 0 11月 30 16:53 cpuinfo
-r--r--r-- 1 root root 0 11月 30 16:53 crypto
-r--r--r-- 1 root root 0 11月 30 16:53 devices
-r--r--r-- 1 root root 0 11月 30 16:53 diskstats
-r--r--r-- 1 root root 0 11月 30 16:53 dma
dr-xr-xr-x 2 root root 0 11月 30 16:53 driver/
-r--r--r-- 1 root root 0 11月 30 16:53 execdomains
-r--r--r-- 1 root root 0 11月 30 16:53 fb
-r--r--r-- 1 root root 0 11月 30 16:53 filesystems
dr-xr-xr-x 5 root root 0 11月 30 16:53 fs/
-r--r--r-- 1 root root 0 11月 30 16:53 interrupts
-r--r--r-- 1 root root 0 11月 30 16:53 iomem
-r--r--r-- 1 root root 0 11月 30 16:53 ioports
dr-xr-xr-x 57 root root 0 11月 30 16:53 irq/
-r--r--r-- 1 root root 0 11月 30 16:53 kallsyms
-r-------- 1 root root 140737477881856 11月 30 16:53 kcore
-r--r--r-- 1 root root 0 11月 30 16:53 keys
-r--r--r-- 1 root root 0 11月 30 16:53 key-users
-r-------- 1 root root 0 11月 16 14:27 kmsg
-r-------- 1 root root 0 11月 30 16:53 kpagecgroup
-r-------- 1 root root 0 11月 30 16:53 kpagecount
-r-------- 1 root root 0 11月 30 16:53 kpageflags
-r--r--r-- 1 root root 0 11月 30 16:53 loadavg
-r--r--r-- 1 root root 0 11月 30 16:53 locks
-r--r--r-- 1 root root 0 11月 30 16:53 mdstat
-r--r--r-- 1 root root 0 11月 30 16:53 meminfo
-r--r--r-- 1 root root 0 11月 30 16:53 misc
-r--r--r-- 1 root root 0 11月 30 16:53 modules
lrwxrwxrwx 1 root root 11 11月 30 16:53 mounts -> self/mounts
dr-xr-xr-x 3 root root 0 11月 30 16:53 mpt/
-rw-r--r-- 1 root root 0 11月 30 16:53 mtrr
lrwxrwxrwx 1 root root 8 11月 30 16:53 net -> self/net/
-r--r--r-- 1 root root 0 11月 30 16:53 pagetypeinfo
-r--r--r-- 1 root root 0 11月 30 16:53 partitions
-r--r--r-- 1 root root 0 11月 30 16:53 sched_debug
-r--r--r-- 1 root root 0 11月 30 16:53 schedstat
dr-xr-xr-x 4 root root 0 11月 30 16:53 scsi/
lrwxrwxrwx 1 root root 0 11月 16 14:27 self -> 107692/
-r-------- 1 root root 0 11月 30 16:53 slabinfo
-r--r--r-- 1 root root 0 11月 30 16:53 softirqs
-r--r--r-- 1 root root 0 11月 30 16:53 stat
-r--r--r-- 1 root root 0 11月 16 14:27 swaps
dr-xr-xr-x 1 root root 0 11月 16 14:27 sys/
--w------- 1 root root 0 11月 30 16:53 sysrq-trigger
dr-xr-xr-x 2 root root 0 11月 30 16:53 sysvipc/
lrwxrwxrwx 1 root root 0 11月 16 14:27 thread-self -> 107692/task/107692/
-r--r--r-- 1 root root 0 11月 30 16:53 timer_list
-rw-r--r-- 1 root root 0 11月 30 16:53 timer_stats
dr-xr-xr-x 4 root root 0 11月 30 16:53 tty/
-r--r--r-- 1 root root 0 11月 30 16:53 uptime
-r--r--r-- 1 root root 0 11月 30 16:53 version
-r--r--r-- 1 root root 0 11月 30 16:53 version_signature
-r-------- 1 root root 0 11月 30 16:53 vmallocinfo
-r--r--r-- 1 root root 0 11月 30 16:53 vmstat
-r--r--r-- 1 root root 0 11月 30 16:53 zoneinfo

1. /proc/cpuinfo

/proc文件系统(一):cpuinfo

2. /proc/<pid> 整体

/proc目录中有一些以数字命名的目录,它们是进程目录。

  • 系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。
  • 在Linux 2.6.0-test6以上的版本中/proc/pid目录中有一个task目录,/proc/pid/task目录中也有一些以该进程所拥有的线程的线程号命名的目录/proc/pid/task/tid,它们是读取线程信息的接口。

root@TinaLinux:/proc/219# ll
dr-xr-xr-x 8 root root 0 Nov 30 14:49 .
dr-xr-xr-x 1031 root root 0 Jan 1 1970 ..
dr-xr-xr-x 2 root root 0 Nov 30 14:52 attr
-r-------- 1 root root 0 Nov 30 14:49 auxv
-r--r--r-- 1 root root 0 Nov 30 14:49 cmdline
-rw-r--r-- 1 root root 0 Nov 30 14:52 comm
-rw-r--r-- 1 root root 0 Nov 30 14:52 coredump_filter
lrwxrwxrwx 1 root root 0 Nov 30 14:52 cwd -> /usr/bvrobot
-r-------- 1 root root 0 Nov 30 14:52 environ
lrwxrwxrwx 1 root root 0 Nov 30 14:49 exe -> /usr/bvrobot/bvrobot
dr-x------ 2 root root 0 Nov 30 14:52 fd
dr-x------ 2 root root 0 Nov 30 14:52 fdinfo
-r--r--r-- 1 root root 0 Nov 30 14:52 limits
-rw-r--r-- 1 root root 0 Nov 30 14:52 loginuid
-r--r--r-- 1 root root 0 Nov 30 14:52 maps
-rw------- 1 root root 0 Nov 30 14:52 mem
-r--r--r-- 1 root root 0 Nov 30 14:52 mountinfo
-r--r--r-- 1 root root 0 Nov 30 14:52 mounts
-r-------- 1 root root 0 Nov 30 14:52 mountstats
dr-xr-xr-x 4 root root 0 Nov 30 14:52 net
dr-x--x--x 2 root root 0 Nov 30 14:52 ns
-rw-r--r-- 1 root root 0 Nov 30 14:52 oom_adj
-r--r--r-- 1 root root 0 Nov 30 14:52 oom_score
-rw-r--r-- 1 root root 0 Nov 30 14:52 oom_score_adj
-r--r--r-- 1 root root 0 Nov 30 14:52 personality
lrwxrwxrwx 1 root root 0 Nov 30 14:52 root -> /
-r--r--r-- 1 root root 0 Nov 30 14:52 sessionid
-r--r--r-- 1 root root 0 Nov 30 14:52 stack
-r--r--r-- 1 root root 0 Nov 30 14:49 stat
-r--r--r-- 1 root root 0 Nov 30 14:52 statm
-r--r--r-- 1 root root 0 Nov 30 14:52 status
dr-xr-xr-x 13 root root 0 Nov 30 14:52 task
-r--r--r-- 1 root root 0 Nov 30 14:52 wchan

2.1 /proc/<pid>/stat

root@TinaLinux:/proc/3782# cat stat
3782 (bvrobot) S 114 3782 114 64512 4072 1077936384 8727 14959 0 0 37 524 0 1 20 0 11 0 71083 45535232 8490 4294967295 65536 1285064 3201052128 3201049428 3069071928 0 0 4096 67137026 4294967295 0 0 17 2 0 0 0 0 0 1353712 1360302 4616192
参数 数值 解释
pid 3782 进程(包括轻量级进程,即线程)号
comm bvrobot 应用程序或命令的名字
task_state S 任务的状态:
R:runnign, S:sleeping (TASK_INTERRUPTIBLE),
T: stopped, Z:zombie, D:dead
ppid 114 父进程ID
pgid 3782 进程组号
sid 114 该任务所在的会话组ID
tty_nr 64512(pts/6) 该任务的tty终端的设备号
tty_pgrp 4072 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
task->flags 1077936384 进程标志位,查看该任务的特性
min_flt 8727 该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
cmin_flt 14959 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
maj_flt 0 该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
cmaj_flt 0 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
utime 37 该任务在用户态运行的时间,单位为jiffies
stime 524 该任务在核心态运行的时间,单位为jiffies
cutime 0 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime 1 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority 20 任务的动态优先级
nice 0 任务的静态优先级
num_threads 11 该任务所在的线程组里线程的个数
it_real_value 0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time 71038 该任务启动的时间,单位为jiffies
vsize 45535232 该任务的虚拟地址空间大小
rss 8490 该任务当前驻留物理地址空间的大小;。
rlim 4294967295 该任务能驻留物理地址空间的最大值
start_code 65536 该任务在虚拟地址空间的代码段的起始地址
end_code 1285064 该任务在虚拟地址空间的代码段的结束地址
start_stack 3201052128 该任务在虚拟地址空间的栈的结束地址
kstkesp 3201049428 esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip 3069071928 指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
pendingsig 0 待处理信号的位图,记录发送给进程的普通信号
block_sig 0 阻塞信号的位图
sigign 4096 忽略的信号的位图
sigcatch 67137026 被俘获的信号的位图
wchan 4294967295 如果该进程是睡眠状态,该值给出调度的调用点
nswap 0 被swapped的页数,当前没用
cnswap 0 所有子进程被swapped的页数的和,当前没用
exit_signal 17 该进程结束时,向父进程所发送的信号
task_cpu(task) 2 运行在哪个CPU上
task_rt_priority 0 实时进程的相对优先级别
task_policy 0 进程的调度策略,0:非实时进程,1:FIFO实时进程;2:RR实时进程
blio_ticks 0 等待阻塞IO的时间
gtime 1353712 guest time of the task in jiffies
cgtime 1360302 guest time of the task children in jiffies
start_data 4616192 address above which program data+bss is placed
end_data address below which program data+bss is placed
start_brk address above which program heap can be expanded with br
arg_start |  |    address above which program command line is placed

arg_end | | address below which program command line is placed

env_start | | address above which program environment is placed

env_end | | address below which program environment is placed

exit_code | | the thread's exit_code in the form reported by the waitpid system call

/proc文件系统(二):/proc/<pid>/stat的更多相关文章

  1. 深入理解linux系统下proc文件系统内容

    深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...

  2. proc文件系统探索 之 以数字命名的目录

    在proc根目录下,以数字命名的目录表示当前一个运行的进程,目录名即为进程的pid.其内的目录和文件给出了一些关于该进程的信息. niutao@niutao-desktop:/proc/6584$ l ...

  3. [Linux] Proc 文件系统

    转载自:http://linux.chinaunix.net/doc/2004-10-05/16.shtml#324lfindex0 目录: /proc --- 一个虚拟文件系统 加载 proc 文件 ...

  4. /proc文件系统的特点和/proc文件的说明

    /proc文件系统是一种特殊的.由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间. /proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动 ...

  5. Linux proc文件系统小记

    序言: 当linux系统存在多个网口时(也可以是一个网口配置两个IP),每个网口配置不同的IP地址,并且分别连接到不同的电脑上,电脑分别配置与相连的网口统一网段的IP且将电脑网关设置为linux的网口 ...

  6. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  7. 移动端测试===PROC系列之---/proc/pid/stat 如何准确取cpu的值【转】

         /proc/ /stat 包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻. [root@localhost ~]# cat /proc/6873/stat 68 ...

  8. proc文件系统详解(原创)

    Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...

  9. shell学习五十八天----/proc文件系统

    /proc文件系统 前言:linux中的/proc文件系统,由一组文件夹和文件组成,挂载(mount)与/proc文件夹下. /proc文件系统是一种虚拟文件系统,以文件系统文件夹和文件形式,提供一个 ...

随机推荐

  1. shell脚本监控系统负载、CPU和内存使用情况

    hostname >>/home/vmuser/xunjian/xj.logdf -lh >>/home/vmuser/xunjian/xj.logtop -b -n 1 | ...

  2. Linux环境部署项目引起Out of Memory Error: PermGen Space的解决方案

    1. 背景 前几天,在搭建项目时遇到到一些问题,现在整理记录一下. Linux环境:Red Hat Enterprise Linux Server release 6.4: # 查看命令cat /et ...

  3. Linux 第六天

    1)locate 在文件资料库中查找文件(需要文件资料库中有,新建的文件查不到,需要手动更新,updatedb.查不到/tmp目录下的文件) 语法:locate 文件名 常用选项: -i:无视大小写查 ...

  4. jxl操作excel写入数据不覆盖原有数据示例

    public void readTO() {        Workbook wb = null;        WritableWorkbook wwb = null;        try {   ...

  5. Django Model 基础

    程序涉及到数据库相关操作时,一般都会这样: 创建数据库,设计表结构和字段 使用 pymysql 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import pymysq ...

  6. shell脚本基础教程

    一.什么是shell: shell解释:引用别人的话说:“Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.” 简而言之, ...

  7. itext实现合同尾部签章部分自动添加,定位签名

    使用的pom <!-- pdf处理 start--> <dependency> <groupId>com.itextpdf</groupId> < ...

  8. lombok的介绍及使用

    参考:https://blog.csdn.net/motui/article/details/79012846 介绍 在项目中使用Lombok可以减少很多重复代码的书写.比如说getter/sette ...

  9. Testing - 软件测试知识梳理 - 测试流程

    测试存在于各个阶段: 需求测试--->单元测试--->集成测试--->系统测试--->性能测试--->用户测试--->回归测试 需求测试 完整性&正确性 一 ...

  10. Tools - Windows OS

    001 - 文本操作 Ctrl + C / Ctrl + V / Ctrl + X / Ctrl + Z / Ctrl + A:复制/粘贴/剪贴/撤销/全选. 002 - 窗口分屏 使用快捷键 选中程 ...