伪文件系统
Linux内核提供了procfs、sysfs和devfs等文件系统,伪文件系统存在于内存中,通常不占用硬盘空间,它以文 件的形式,向用户提供了访问系统内核数据的接口。用户和应用程序 可以通过访问这些数据接口,得到系统的信息,而且内核允许用户修改内核的某些参数。
procfs文件系统
procfs是“process filesystem”的缩写,所以它 也被称为进程文件系统,procfs通常会自动挂载在根 目录下的/proc文件夹。procfs为用户提供内核状态和进程信息的接口,功能相 当于Windows的任务管理器。
/proc各个文件的作用
数字编号
数字编号表示的是进程的 PID 号,系统中当前运行的每一个进程都有对应的一个目录,用于记录进程所有相关信息。对于操作系统来说,一个应用程序就是一个进程
self
该文件是一个软链接,指向了当前进程的目录,通过访问/proc/self/目录来获取当前进程的信息,就不用每次都获取pid
thread-self
该文件也是一个软链接,指向了当前线程,访问该文件,等价于访问“当前进程pid/task/当前线程tid”的内容。。一个进程,可以包含多个线程,但至少需要一个进程,这些线程共同支撑进程的运行。
version
记录了当前运行的内核版本,通常可以使用命令“uname –r”
cpuinfo
记录系统中CPU的提供商和相关配置信息
modules
记录了目前系统加载的模块信息
meminfo
记录系统中内存的使用情况,free命令会访问该文件,来获取系统内存的空闲和已使用的数量
filesystems
记录内核支持的文件系统类型,通常mount一个设备时,如果没有指定文件系统并且它无法确定文件系统类型时,mount会尝试包含在该文件中的文件系统,除了那些标有“nodev”的文件系统。
数字编号包含的内容
文件名 文件内容
cmdline 只读文件,记录了该进程的命令行信息,如命令以及命令参数
comm 记录了进程的名字
environ 进程使用的环境变量
exe 软连接文件,记录命令存放的绝对路径
fd 记录进程打开文件的情况,以文件描述符作为目录名
fdinfo 记录进程打开文件的相关信息,包含访问权限以及挂载点,由其文件描述符命名。
io 记录进程读取和写入情况
map_files 记录了内存中文件的映射情况,以对应内存区域起始和结束地址命名
maps 记录当前映射的内存区域,其访问权限以及文件路径。
stack 记录当前进程的内核调用栈信息
status 记录进程的状态信息
syscall 显示当前进程正在执行的系统调用。第一列记录了系统调用号
task 记录了该进程的线程信息
wchan 记录当前进程处于睡眠状态,内核调用的相关函数