/proc 文件系统概述

/proc 是 Linux 内核提供的一个虚拟文件系统,它并不占用磁盘空间,而是由内核在内存中动态生成。这个文件系统提供了一种机制,允许用户空间程序访问内核空间的数据结构,从而获取系统和进程的运行状态信息。

/proc文件系统中的文件和目录提供了以下功能:

  1. 进程信息:每个进程都有一个对应的目录,例如/proc/[pid],其中包含了该进程的详细信息,如状态、内存使用、打开的文件等。
  2. 系统信息/proc中有一些特殊的文件,如/proc/cpuinfo/proc/meminfo/proc/version,它们提供了关于CPU、内存和内核版本的信息。
  3. 内核参数:一些内核参数可以通过/proc文件系统进行读取和修改,例如/proc/sys目录下的文件。
  4. 设备文件/proc/bus目录下包含了系统中设备的相关信息,如PCI总线设备。
  5. 挂载信息/proc/mounts文件包含了当前系统上所有挂载的文件系统列表。
  6. 网络信息/proc/net目录包含了网络相关的统计信息和配置。

详细介绍:

1、进程目录

  • cwd:当前工作目录的符号链接。
  • fd:打开文件的符号链接。
  • exe:指向启动该进程的可执行文件的符号链接。
  • stat:进程的状态信息。
  • status:更易读的进程状态信息。
  • cmdline:启动该进程的命令行参数。
  • 每个进程都有一个以进程ID命名的目录,例如 /proc/1234,其中 1234 是进程ID。
  • 这些目录下包含了该进程的详细信息,如:
每个运行中的进程都有一个以其 PID 命名的子目录,例如 /proc/1234。
这些子目录包含大量关于该进程的信息:
/proc/[PID]/cmdline:进程的启动命令行参数。
/proc/[PID]/cwd:指向进程当前工作目录的符号链接。
/proc/[PID]/environ:进程的环境变量。
/proc/[PID]/exe:指向进程的可执行文件的符号链接。
/proc/[PID]/fd/:文件描述符的目录,每个文件描述符都有一个条目。
/proc/[PID]/maps:进程的内存映射。
/proc/[PID]/status:进程状态信息。
/proc/[PID]/stat:进程的状态信息,格式化为单行数据。

在 Linux 系统中,/proc/[PID]/ns/ 是一个指向特定进程的命名空间(namespace)的符号链接。每个进程都有自己的命名空间,这些命名空间决定了进程如何看到系统资源,如网络、文件系统、用户组等。

/proc/[PID]/ns/ 目录下通常包含以下命名空间:

mnt:挂载命名空间,决定了进程看到的文件系统视图。
net:网络命名空间,决定了进程看到的网络接口和协议栈。
pid:进程 ID 命名空间,允许进程拥有独立的进程编号。
user:用户命名空间,允许进程拥有独立的用户和组 ID。
ipc:进程间通信(IPC)命名空间,决定了进程如何看到 IPC 资源。
uts:UNIX 时间共享系统(UTS)命名空间,决定了进程看到的主机名和网络名称。

2、系统信息文件:这些文件提供了系统级别的硬件和内核信息:

/proc/cpuinfo:包含有关 CPU(中央处理器)的详细信息,包括型号、速度和缓存大小等。
/proc/meminfo:提供了关于系统内存使用情况的详细信息,包括总内存、可用内存、缓存和交换空间等。
/proc/uptime:显示系统启动以来的时间和系统的空闲时间。
/proc/loadavg:显示系统负载平均值(1、5、15 分钟)。
/proc/version:显示当前运行的内核版本和编译信息。
/proc/filesystems:显示当前内核支持的文件系统类型。
/proc/partitions:列出系统中的磁盘分区信息。
/proc/version:显示内核版本信息。
/proc/uptime:显示系统启动以来的时间。
/proc/loadavg:显示系统负载平均值。

3、系统配置参数

/proc/sys:包含系统配置参数,可以用于调整系统行为,如网络设置、文件系统参数等。可以通过 sysctl 命令来查看和修改这些参数

/proc/sys/net/ipv4/ip_forward:用于控制 IP 转发功能。如果设置为 1,则启用 IP 转发。
/proc/sys/kernel/hostname:存储系统主机名。
/proc/sys/vm/swappiness:控制内核的交换行为。


sysctl -a                # 查看所有可调参数  
sysctl net.ipv4.ip_forward  # 查看IP转发状态  
sudo sysctl -w net.ipv4.ip_forward=1  # 启用IP转发

4、内存管理信息

  • /proc/meminfo:提供内存使用情况的统计信息。
  • /proc/buddyinfo:显示内存分配的伙伴系统状态。(用于诊断内存碎片问题的相关信息文件)

5、CPU 信息

  • /proc/cpuinfo:列出CPU的详细信息,如型号、速度等。

6、中断和I/O请求信息

  • /proc/interrupts:显示中断和I/O请求的统计信息。

7、网络信息

  • /proc/net:包含网络子系统的各种统计信息,如路由表、套接字等。

8、设备驱动信息

/proc/bus:包含系统中设备的总线信息。
/proc/devices:显示系统中字符设备和块设备的列表。
/proc/interrupts:显示各个 CPU 的中断统计信息。
/proc/dma:显示已使用的 DMA 通道信息。
/proc/ioports:显示已使用的 I/O 端口信息。

标签: none

评论已关闭