/proc目录
又称为虚拟文件目录,也是一种文件系统,即是proc系统,但与常见文件系统不同,该文件系统是一种伪文件系统,(虚拟文件系统),主要存储的是当前系统内核中运行状态下的一些特殊文件,用户可以通过这些文件查看相关的硬件情况以及当前正在运行的进程相关信息,甚至可以通过修改这些文件,来更改设备在内核中运行的状态.通常我们熟知的proc目录存放的是当前系统CPU,内存等信息,如: /proc/cpuinfo; /proc/meminfo; /proc/devices 等
因为proc目录的特殊性,其中存放的文件也被成为虚拟文件,而且具有独特的特点,.
有些文件查看命令时会有大量信息,在文件本身却是0字节. 同时,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟他们自身的状态有关,他们通过是存储在RAM中,会不定时的刷新各种相关的状态,.
为了查看时用方便,这些文件通常是根据不同类型,进行存放的,当我们直接使用查看文件的命令去查看时,可能会有很大障碍,这些在人类看来不怎么具有可读性.但在使用Linux相关命令时,却能很清楚的明白.很多命令的返回结果都是从这个目录下获取的数据,如: free命令.lscpu命令.lsmem命令,top命令等.
/proc目录有很多以数字命令的目录,这些数字代表的是当前系统中正在运行的进程的进程号.这些目录中包含对应进程相关的多个信息文件,在这些文件中可以查看到当前进程状态信息,也可以进行手动修改.
/proc目录选常见文件介绍:
/apm : 电源管理项目.版本,状态信息等.
/buddyinfo : 用于诊断内存碎片问题的相关信息文件,
/cmdline : 启动时传递至内核的相关参数信息,
/cpuinfo cpu相关信息文件
/crypto 系统上已安装的内核使用的密码算法信息
/devices 系统上已经加载的所有块设备和字符设备的信息,包含主设备号和设备组名等信息.
/diskstats 系统上每块磁盘设备的磁盘io统计信息
等等.………
/sys 目录:
这个目录不占用磁盘资源,是虚拟文件系统,sysfs是linux内核设计中较新的一种虚拟的基于内存的文件系统,它的作用和/proc有些类似,但也有不同之处: 除了与proc相同的具有查看和设定内核参数功能之外,还有为linux同一设备模型作为管理之用,,相比于proc文件系统,使用sysfs导出内核数据方式更为统一.它是从proc上有些改进的,有了更好的组织方式,,也吸取了proc设计中教训.
sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的 sysfs 挂载位置不固定或没有标准被挂载,有些程序从 /proc/mounts 中解析出 sysfs 是否被挂载以及具体的挂载点,这个步骤现在已经不需要了。
sys中目录:
/sys/devices
该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备。一般来说,所有的物理设备都按其在总线上的拓扑结构来显示,但有两个例外,即platform devices和system devices。platform devices一般是挂在芯片内部的高速或者低速总线上的各种控制器和外设,它们能被CPU直接寻址;system devices不是外设,而是芯片内部的核心结构,比如CPU,timer等,它们一般没有相关的驱动,但是会有一些体系结构相关的代码来配置它们。(sys/devices是内核对系统中所有设备的分层次表达模型,也是/sys文件系统管理设备的最重要的目录结构)
sys/dev
该目录下维护一个按照字符设备和块设备的主次号码(major:minor)链接到真是设备(/sys/devices)的符号链接文件。
/sys/class
该目录下包含所有注册在kernel里面的设备类型,这是按照设备功能分类的设备模型,每个设备类型表达具有一种功能的设备。每个设备类型子目录下都是这种哦哦那个设备类型的各种具体设备的符号链接,这些链接指向/sys/devices/name下的具体设备。设备类型和设备并没有一一对应的关系,一个物理设备可能具备多种设备类型;一个设备类型只表达具有一种功能的设备,比如:系统所有输入设备都会出现在/sys/class/input之下,而不论它们是以何种总线连接到系统的。(/sys/class也是构成linux统一设备模型的一部分)
/sys/block
该目录下的所有子目录代表着系统中当前被发现的所有块设备。按照功能来说防止在/sys/class下会更合适,但由于历史遗留因素而一直存在于/sys/block,但从linux2.6.22内核开始这部分就已经标记为过去时,只有打开了CONFIG_SYSFS_DEPRECATED配置编译才会有这个目录存在,并且其中的内容在从linux2.6.26版本开始已经正式移到了/sys/class/block,旧的接口/sys/block为了向后兼容而保留存在,但其中的内容已经变为了指向它们在/sys/devices/中真实设备的符号链接文件。
/sys/bus
该目录下的每个子目录都是kernel支持并且已经注册了的总线类型。这是内核设备按照总线类型分层放置的目录结构,/sys/devices中的所有设备都是连接于某种总线之下的,bus子目录下的每种具体总线之下可以找到每个具体设备的符号链接,
一般来说每个子目录(总线类型)下包含两个子目录,一个是devices,另一个是drivers;其中devices下是这个总线类型下的所有设备,这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/name/下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下 是一些可以观察和修改的driver参数。
(它也是构成linux统一设备模型的一部分)
/sys/fs
按照设计,该目录使用来描述系统中所有的文件系统,包括文件系统本身和按照文件系统分类存放的已挂载点。
/sys/kernel
这个目录下存放的是内核中所有可调整的参数
/sys/firmware
该目录下包含对固件对象(firmware object)和属性进行操作和观察的接口,即这里是系统加载固件机制的对用户空间的接口.(关于固件有专用于固件加载的一套API)
/sys/hypervisor
该目录是与虚拟化Xen相关的装置。(Xen是一个开放源代码的虚拟机监视器)
/sys/module
该目录下有系统中所有的模块信息,不论这些模块是以内联(inlined)方式编译到内核映像文件中还是编译为外模块(.ko文件),都可能出现在/sys/module中。即module目录下包含了所有的被载入kernel的模块。
/sys/power
该目录是系统中的电源选项,对正在使用的power子系统的描述。这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机/重启等等。