proc 文件系统 是一个 虚拟文件系统 ,它以文件系统的方式为 应用层访问系统内核数据 提供了接口, 用户 和 应用程序 可以通过 proc 文件系统得到 系统信息 和 进程相关信息。 proc 文件系统是动态创建的,文件本身并不存在于磁盘当中、只存在于内存当中,与 devfs 一样,都被称为虚拟文件系统, 最初构建 proc 文件系统是为了提供有关系统中进程相关的信息,但是由于这个文件系统非常有用,因此内核中的很多信息也开始使用它来报告,或 启用动态运行时配置。内核构建 proc 虚拟文件系统,它会将 内核运行时的一些关键数据信息以文件的方式呈现在 proc 文件系统下的一些特定文件中,这样 相当于 将一 些不可见的内核中的数据结构以可视化的方式呈现给应用层。
proc 文件系统挂载在系统的/proc 目录下
,对于
内核开发者
(譬如
驱动开发工程师
)来说,proc 文件系统给了开发者一种
调试内核
的方法:通过查看
/proc/xxx
文件来获取到内核特定数据结构的值,在添加了 新功能前后进行对比,就可以判断此功能所产生的影响是否合理。
cd proc ls
可以看到/proc
目录下有很多以数字命名的文件夹,譬如
100038
、
2299
、
98560
,这些数字对应的其实就 是一个一个的进程 PID
号,每一个进程在内核中都会存在一个编号,通过此编号来区分不同的进程,这个 编号就是 PID
号,关于
PID
、以及进程相关的信息将会在后面章节内容中向大家介绍。
cmdline:内核启动参数;
cpuinfo:CPU 相关信息;
iomem:IO 设备的内存使用情况;
interrupts:显示被占用的中断号和占用者相关的信息;
ioports:IO 端口的使用情况;
kcore:系统物理内存映像,不可读取;
loadavg:系统平均负载;
meminfo:物理内存和交换分区使用情况;
modules:加载的模块列表;
mounts:挂载的文件系统列表;
partitions:系统识别的分区表;
swaps:交换分区的利用情况;
version:内核版本信息;
uptime:系统运行时间;