简介:
Linux系统上的/proc目录是一种文件系统,即proc文件系统。 与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
基于/proc文件系统如上所述的特殊性,其内的文件也常被称作 虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。
为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如 /proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息, /proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。
大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。
查看其中文件:

其中大部分文件目录以pid命名,其中存贮着这个进程的所有信息
文件中modules存放着驱动信息,使用cat指令可以查看加载的所有驱动
我们以一个终端为例
进入目录
其中fd文件下存放着文件描述符
可以看到这是一个软连接,连接到了/dev/pts/3
那么我们对/dev/pts/3驱动使用echo指令理论上就可以将文本输出到终端上
成功!
其他文件:
cmdline:启动当前进程的命令
cwd :指向该文件目录
environ :环境变量
exe:启动当前进程的可执行文件
fd :这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接
limits :当前进程所使用的每一个受限资源的软限制、硬限制和管理单元;此文件仅可由实际启动当前进程的UID用户读取
maps:当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表
mem :当前进程所占用的内存空间,由open、read和lseek等系统调用使用,不能被用户读取
root :指向根目录
stat :当前进程状态信息,使用ps指令可将其读出,包含格式化数列
statm :当前进程占用的内存的状态信息
status :与stat提供的信息相似,但可读性较好
task :目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;(内核2.6版本以后支持此功能)
