开发者学堂课程【Linux 操作系统实战:Linux 系统的 proc 和 sys 文件系统】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/699/detail/12291
Linux 系统的 proc 和 sys 文件系统
内容介绍:
一、前提讲解
二、Linux 系统的 proc 和 sys 文件系统
一、前提讲解
在进行讲课之前先分享一下需要用到的两个重要概念,主存与辅存这两个在计算机中是配合使用的:
主存也是通俗说的内存内存就是所谓的内存条,内存可以被 CPU 直接访问和读取,由 RAM 和 ROM 组成,RAM 能快速进行读写操作,ROM 通常是用来只读的。
内存用于存放正在运行的程序和数据,它速度快但成本高。在前一些年内存的价格较高,很多内存的配置只有16G 或是32G。但随着现在云服务器的兴起,内存的价格以及偏低,一般的服务器可以配置到128G、256G 甚至是更高的,这样相对来说,服务器的性能越来越高。
辅存一般专是指容量大、速度较慢、价格低的磁表面存储器和光盘存储器、以及目前市面流行的固态驱动器(SSD 硬盘)等,可能有些同学想要把逻辑硬盘换成一个固态硬盘就是要换一个 SSD 硬盘。辅存不能被 CPU 直接访问,用于存放那些暂时不用的程序和数据。
内存主要是用来存储临时数据,做缓存用的。对于 PC 机、服务器来说,“内存是 CPU 和存储器数据沟通的桥梁”。只有了解主存和辅存相辅相成的关系后,才能在实际的程序编写、技能调优、技能查看等方面做到更加成熟于胸。
本次课程的重要内容:
第一个部分是介绍 Linux 系统中的两个和内存有关的重要文件,proc 和 system 文件;第二部分是介绍 linux 内存和系统性能常用监控管理命令;第三个是讲解如何分配和创建 Swap 分区。
Swap 分区比较特殊,他是在硬盘空间中划分一个区域出来,用来做数据的缓存。可以将 CPU 直接访问,也就是间接的提升了内存的大小。通过 Swap 分区的这种方式,可以把辅存变相的当辅存来使用。
二、Linux 系统的 proc 和 sys 文件系统
Proc 和 sys 这两个都包含了相关的内存信息,可以通过一些命令调取相关的信息来获取内存的信息
(1)/proc 目录介绍
Linux 内核提供了一种通过/proc 文件系统,在运行时访问内核内部数据结构,改变内核设置的机制。
proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。也就是可以通过访问 proc 这个文件来拿到所需要知道的相关信息
操作演示:
打开命令行,先切换目录到 proc 目录下,语句为 cd /proc
和语句 ls
,就可以查看 proc 目录下的文件,如下图。
蓝色一般代表的时目录,之后在进行实操之后就可以了解到,前面的数字就代表的是 pid 标号。剩下的除了目录之外的白色字体,就是一些文件。
A./proc/cmdline 这个文件给出了内核启动的命令行
先切换到命令行中,用 cat 命令来输入语句 cat cmdline
,结果如下,可以看到 Linux 在启动的时候,这些启动的参数和选项都是包含在内的,包括 BOOT_IMAGE、进程信息、内核信息以及相关信息,在启动的内容中都可以看到。
B./proc/cupinfo 提供了有关系统 CPU 的多种信息
同样用 cat 命令,输入语句 cat cpuinfo
运行的参数,结果如下图,可以看到有一个 processor 为0,cpu 的信息,包括型号等其他参数,可以在文件中查看到。
之后会有一个 processor:1,这是第二个 cpu 的信息,可以回顾之前购买的 exe 服务器,当时 CPU 的样子。现在进行 CPU 信息的回顾,可以看到当时购买的是两核8GB 的信息,有两个 process 和两个 CPU 和8GB 的信息,对比之后都是正确的。
C./proc/devices 列出字符和块设备的主设备号,以及分配到这些设备号的设备名称
这些是设备内容详细的信息同样用 cat 命令,输入语句 cat devices
,结果如下,会有很多的 device 信息,有一个大致的了解既可。
D./proc/ filesystems 列出可供使用的文件系统类型,每一种类型一行
同样使用 cat 命令,在窗口中输入 cat devices
,结果如下,会有几百个文件信息,一行表示一个类型,有一个 usb 信息,就表示这个包含的都是 usb 类型,这个内容需要了解。
E./proc/kcore 系统的物理内存以 core 文件格式保存的文件
F./proc/meminfo 这个文件给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内
核使用的共享内存和缓冲区总量。这些信息的格式和 free 命令显示的结果类似。
使用 cat 命令,输入语句 cat meminfo
,得到以下结果,会显示内存的大写是8G,空闲的内存大小是7G,还有其他参数向其他内存,swap 分区以及配置,这个会在后面做详细的介绍。
(2)/sys 文件系统介绍
sys 文件系统本质上和 proc 文件系统是一样的,都是放在内存的数据,都是虚拟文件系统。都在根目录下有个目录(一个是/proc 目录,另一个是/sys 目录),因此都不是硬盘中的文件,都是内核中的数据结构的可视化接口。
不同的是/proc 中的文件只能读,但是/sys 中的文件可以读写。读取/sys 中的文件就是获取内核中数据结构的值,而写入/jsip 中的文件就是内核中的数据结构的元素的值。
通常会发现 sys 使用在一些存储、文件以及设备的一些信息,相等于管理着一些内容。而 proc 主要是对进程的监控、查看以及运行参数的展示,这就是两者之间的一点区别。
操作演示:
先连接云服务器,用 cd 命令到目录下,语句为:cd /sys
和语句ll
,结果如下,蓝色的都代表是目录,而 sys 的目录是比 proc 的目录数量少一些。
先打开一个目录,进行查看,输入语句 cd block/
,在输入ll
。结果如下,会发现 vda 和 vdb,这个是代表着系统中发现的设备速度快,之前购买的系统,一个是分区,一个是云盘。是两个分区,所以会弹出两个信息。
block 每个子目录代表系统中当前被发现的所有块设备
bus 每个子目录代表 kernel 支持并且已经注册了的总线类型
class 包含所有注册在 kernel 里面的设备类型
dev 存放主次设备号文件
devices 包含所有被发现的注册在各种总线上的各种物理设备
firmware 系统加载固件机制的对用户空间的接口文件
fs 描述文件系统,包括文件系统分类存放的已挂载点等。
hypervisor 与虚拟化 Xen 虚拟机相关的装置
kernel 存放的是内核中所有可调整的参数
module 存放系统中所有的模块信息
power 系统中的电源选项