没志青年
发布于 2025-06-14 / 12 阅读
0

9 Linux proc 文件系统

proc 是伪文件系统,不在磁盘中,只存在于内存中。

挂载在 /proc 目录下,内核运行时动态生成里面的内容,为用户空间程序提供了一个动态查看和修改内核运行时信息的窗口。

如何使用 proc

  • 手动浏览:使用 lscat是最直接的方式。

  • 编程读取:应用程序可以像打开普通文件一样 open()read()/proc下的文件来获取信息,这使得编写系统监控工具变得非常简单。

  • 脚本自动化:在 Shell 脚本中使用 catgrepawk等工具来解析 /proc文件,进行自动化监控和告警。

  • 动态调整:使用 echo命令或脚本向 /proc/sys/下的文件写入新值来调整系统。

进程信息查看

最主要、最原始的功能,proc 文件系统最初就是为了提供进程相关信息而设计的。

每个正在运行的进程都会在 /proc下有一个以其 PID(进程ID)​ 命名的目录。

系统信息查看

cat /proc/cpuinfo
cat /proc/meminfo

内核参数调整与配置

可以在不重新编译内核、不重启系统的情况下改变内核的行为。

大多数可写文件集中在 /proc/sys/目录下,这个目录被单独称为 sysctl​ 接口。

硬件信息查询

可用于驱动开发的调试,但更推荐使用 sysfs 文件系统。

  • /proc/devices:内核已知的字符设备和块设备列

  • bus/:包含各种总线(如PCI、USB)的子目录,可以查看连接到总线上的设备信息。

  • dma:已注册的DMA通道列表

ls /proc/bus/pci/ # 查看PCI设备

虽然 proc文件系统非常重要且历史悠久,但随着 Linux 的发展,一些新的虚拟文件系统被引入来分担它的职责,使其更加规范化:

  • sysfs(/sys)用于内核设备模型。它比 proc更结构化,主要用于表示设备、驱动、总线之间的关系和属性。电源管理、设备热插拔等信息现在更推荐放在 /sys下。proc中关于单个进程的信息和部分非设备信息则保留了下来。

  • debugfs(/sys/kernel/debug)专门用于内核调试。开发人员可以将调试信息放在这个文件系统中,它提供了更大的灵活性,但对生产环境不安全。

  • configfs:用于在线配置复杂的、用户可创建的内核对象。