Heng30的博客
搜索 分类 关于 订阅

简单介绍Linux proc文件系统

2025-02-24

proc文件系统是一个由内核动态生成的虚拟文件系统,挂载在/proc目录下。它不占用物理存储空间,而是通过内存实时反映系统和进程的运行状态。用户和开发者可通过该文件系统访问内核数据结构、进程信息,并动态调整内核参数。

系统级常用文件

  • /proc/cpuinfo:显示CPU的详细信息,包括型号、核心数、频率、缓存大小等。

  • /proc/meminfo:展示内存使用情况,如总内存、空闲内存、缓存、交换分区等。

  • /proc/version:内核版本、GCC 编译器版本及系统环境信息。

  • /proc/uptime:系统运行时间(秒)和所有CPU核心的总空闲时间。

  • /proc/loadavg:系统的平均负载(1/5/15 分钟)、正在运行的进程数/总进程数、最近活跃进程PID。

  • /proc/filesystems:内核支持的文件系统类型列表(如ext4、tmpfs)。

  • /proc/modules:当前加载的内核模块,等同于 lsmod 的输出。

  • /proc/mounts:已挂载的文件系统信息,格式与/etc/mtab一致。

  • /proc/partitions:块设备的分区信息,包括名称、主/次设备号、大小。

  • /proc/stat:系统统计信息,如 CPU 时间、上下文切换次数、中断次数等。

  • /proc/net/dev:网络接口的流量统计(接收/发送的字节、包数、错误数)。

  • /proc/cmdline:系统启动时传递给内核的引导参数(如 root=/dev/sda1)。

进程级常用文件(/proc/[PID]/)

  • cmdline:启动进程的命令行参数,以空字符(\0)分隔。

  • status:进程状态摘要,包括名称、PID、PPID、内存使用(VmSize、VmRSS)、状态(运行/睡眠)。

  • io:进程的 I/O 统计,如读取字节数(rchar)、实际磁盘读取(read_bytes)。

  • exe:符号链接指向进程的可执行文件路径。 示例:ls -l /proc/1234/exe → /usr/bin/bash

  • cwd:符号链接到进程的当前工作目录。

  • fd:目录包含进程打开的文件描述符(如 0 标准输入、1 标准输出)。

  • environ:进程的环境变量,以空字符分隔。

  • maps:进程的内存映射(代码段、堆、栈、共享库等)。

/proc/sys动态内核参数

通过修改/proc/sys下的文件可实时调整内核行为(需 root 权限)。

  • /proc/sys/kernel/hostname:系统主机名,修改后立即生效(等效于hostname命令)。

  • /proc/sys/net/ipv4/ip_forward:控制 IPv4 转发(1 启用,0 禁用)。

  • /proc/sys/vm/swappiness:调整交换分区使用倾向(值范围 0-100,值越高越倾向使用交换空间)。

其他重要文件

  • /proc/interrupts:各CPU核心的中断分配情况。

  • /proc/diskstats:磁盘I/O统计(读/写次数、扇区数)。

  • /proc/self:指向当前访问/proc的进程自身的符号链接。

总结

proc文件系统是Linux系统管理和调试的核心工具之一,提供了从硬件信息到进程状态的全面视图。常用工具如top、ps、free均依赖其数据。掌握 /proc 的使用,能够更高效地进行性能分析和故障排查。