Linux中的伪文件系统
关于Linux中的伪文件系统的相关笔记
Linux中的伪文件系统
什么是伪文件系统?
伪文件系统是一种特殊的文件系统,它是一种虚拟文件系统,它并不真实存在于硬盘上,而是在内存中。它主要用于实现一些特殊功能,或者说是一些不用于保存文件数据的文件系统。如:
- /proc文件系统:它是一个伪文件系统,它是Linux系统中一个特殊的目录,它包含了系统的运行信息,如系统的环境变量、进程信息、内存使用情况等。
- /sys文件系统:它也是一种伪文件系统,它包含了系统的硬件信息,如CPU、内存、磁盘等设备的状态信息。
这些伪文件系统的存在,使得Linux系统可以实现一些特殊的功能,如:
- 实现系统监控:通过/proc文件系统可以获取系统的运行信息,如CPU使用率、内存使用情况、磁盘使用情况等。
- 实现设备控制:通过/sys文件系统可以控制系统的硬件设备,如开启或关闭设备、设置设备参数等。
实际上,可以将这些伪文件系统看作是一种接口,可以通过它们来获取系统的相关信息,同时它们并不真实存在于硬盘上,也不占用磁盘空间。所以这些文件系统下的文件的大小一般是 0
通过命令 sudo cat /proc/filesystems | grep nodev
可以知道本系统所支持的伪文件系统,这里应用的实际上是 nodev
表示的是伪文件系统。
常见的伪文件系统如下:
伪文件系统 | 常用挂载点 | 描述 |
---|---|---|
procfs | /proc |
查看和操作进程相关的信息和配置 |
sysfs | /sys |
查看和操作系统相关的信息和配置 |
configfs | /sys/kernel/config |
创建、管理和删除内核对象 |
debugfs | 用于内核状态调试 | |
cgroupfs | 用于管理系统的中 cgroup | |
hugetlbfs | 查看和管理系统中的大页信息 |
伪文件系统 | 常用挂载点 | 描述 |
---|---|---|
procfs | /proc |
查看和操作进程相关的信息和配置 |
sysfs | /sys |
查看和操作系统相关的信息和配置 |
configfs | /sys/kernel/config |
创建、管理和删除内核对象 |
debugfs | /sys/kernel/debug |
用于内核状态调试 |
cgroupfs | /sys/fs/cgroup |
用于管理系统中的 cgroup |
hugetlbfs | /dev/hugepages |
查看和管理系统中的大页信息 |
devtmpfs | /dev |
动态管理设备文件 |
tmpfs | /dev/shm , /run , /tmp |
基于内存的临时文件存储 |
securityfs | /sys/kernel/security |
提供安全模块信息 |
用户和应用程序可以通过 proc
得到系统的信息(大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现),并可以改变内核的某些参数。由于系统的信息,如进程是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net、scsi和sys。 sys目录是可写的,可以通过它来访问或修改内核的参数,而 net和scsi 则依赖于内核配置。例如:如果系统不支持scsi,则scsi 目录不存在。
c
/proc伪文件系统
这个伪文件系统被挂载在 /proc
目录下,它包含了系统的运行信息,如系统的环境变量、进程信息、内存使用情况等。
/proc下大部分文件是只读的,很多系统工具通过/proc获取信息,比如:
1 |
|
部分文件可写,对于这些文件的修改,等同于使用 sysctl
命令重设内核参数。
下面对于 /proc/
目录下的文件进行一些说明:
下面这些文件主要是对于系统中的硬件信息、运行资源的监控
1 |
|
下面这些文件主要关于每一个进程的运行状态;其中 X
表示进程号。
1 |
|
伪文件系统——参考资料
/sys伪文件系统
Linux 2.6以后的内核引入了sysfs文件系统,sysfs被看成是与proc、devfs和devpty同类别的文件系统,该文件系统是一个虚拟的文件系统,它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。
sysfs把连接在系统上的设备和总线组织成为一个分级的文件,它们可以由用户空间存取,向用户空间导出内核数据结构以及它们的属性。
sysfs的一个目的就是展示设备驱动模型中各组件的层次关系。
其顶级目录包括block、bus、dev、devices、class、fs、kernel、power和firmware等。
- block目录包含所有的块设备;
- devices目录包含系统所有的设备,并根据设备挂接的总线类型组织成层次结构;
- bus目录包含系统中所有的总线类型;
- class目录包含系统中的设备类型(如网卡设备、声卡设备、输入设备等)。
主要的目录结构:
- /sys/class/:
包含系统中各类设备的分类,如 block(块设备)、net(网络设备)等。 - /sys/devices/:
按照设备的物理连接层次结构展示设备信息。 - /sys/bus/:
按照总线类型分类设备信息,如 pci、usb 等。 - /sys/module/:
包含已加载的内核模块的信息及其参数。
使用sysfs
sysfs 作为一个伪文件系统,就是用来告诉计算机的使用者计算机的相关信息的。