 `/proc` 在 Linux 中是一个 **伪文件系统 (procfs)**，它不是存储在磁盘上的真实文件，而是内核在内存中动态生成的接口，主要用于提供 **内核、进程和系统状态** 的信息。几乎所有的监控工具（如 `top`、`htop`、`ps`、`free`、`uptime`、`vmstat`、`iostat`）都是通过读取 `/proc` 下的文件获取数据的。
 
---

# 🗂 **/proc 能查看的信息汇总**

## 1. **进程相关信息**

每个正在运行的进程在 `/proc` 下都会有一个以 **PID** 命名的目录，例如 `/proc/1234/`。里面的内容主要是该进程的状态：

- `/proc/[pid]/cmdline` → 启动命令行参数
- `/proc/[pid]/cwd` → 当前工作目录 (符号链接)
- `/proc/[pid]/exe` → 可执行文件路径 (符号链接)
- `/proc/[pid]/environ` → 环境变量
- `/proc/[pid]/fd/` → 打开的文件描述符
- `/proc/[pid]/maps` → 内存映射情况
- `/proc/[pid]/stat` → 进程状态、运行时间、优先级等
- `/proc/[pid]/status` → 可读性较好的进程状态信息
- `/proc/[pid]/task/` → 线程信息（子目录为线程 ID）

---

## 2. **CPU 相关信息**

- `/proc/cpuinfo` → CPU 型号、核心数、主频、缓存大小、虚拟化支持等
- `/proc/stat` → CPU 使用率、上下文切换、中断次数等
- `/proc/interrupts` → 中断统计
- `/proc/softirqs` → 软中断统计

---

## 3. **内存信息**

- `/proc/meminfo` → 总内存、可用内存、缓存、swap 等
- `/proc/kcore` → 内核内存映射（类似物理内存的转储）
- `/proc/vmallocinfo` → 内核虚拟内存使用情况
- `/proc/slabinfo` → 内核对象缓存（slab 分配器）

---

## 4. **系统信息**

- `/proc/version` → 内核版本信息
- `/proc/uptime` → 系统运行时间和空闲时间
- `/proc/loadavg` → 系统平均负载
- `/proc/cmdline` → 内核启动参数
- `/proc/modules` → 已加载的内核模块
- `/proc/filesystems` → 支持的文件系统类型
- `/proc/mounts` → 当前挂载的文件系统（和 `mount` 命令一致）
- `/proc/partitions` → 磁盘分区信息
- `/proc/devices` → 已注册的设备
- `/proc/ioports` → I/O 端口使用情况
- `/proc/iomem` → 内存映射的 I/O 信息
- `/proc/diskstats` → 磁盘 I/O 统计
- `/proc/locks` → 当前内核中的文件锁

---

## 5. **网络信息**

在 `/proc/net/` 目录下：

- `/proc/net/dev` → 网络接口的流量统计（类似 `ifconfig`、`ip -s link`）
- `/proc/net/tcp`、`/proc/net/udp` → TCP/UDP 连接信息（类似 `ss`、`netstat`）
- `/proc/net/unix` → UNIX 套接字信息
- `/proc/net/route` → 路由表         
- `/proc/net/arp` → ARP 缓存表
- `/proc/net/snmp` → 网络协议统计信息（ICMP、TCP、UDP）

---

## 6. **内核配置与参数**

- `/proc/sys/` → 内核参数（可读可写，可通过 `sysctl` 修改），例如：
    
    - `/proc/sys/net/ipv4/ip_forward` → 是否启用 IPv4 转发
    - `/proc/sys/kernel/hostname` → 主机名
    - `/proc/sys/kernel/pid_max` → 最大进程号
    - `/proc/sys/vm/swappiness` → 内存换出策略

---

## 7. **其他有用的文件**

- `/proc/self/` → 当前进程（即访问 `/proc` 的进程本身）的信息
- `/proc/kmsg` → 内核日志（类似 `dmesg`）
- `/proc/sched_debug` → 调度器的调试信息
- `/proc/zoneinfo` → 内存区域信息
- `/proc/swap` → swap 使用情况

---

# 📊 **总结**

通过 `/proc`，你可以获取：

1. **进程级别** → PID、内存、CPU、线程、文件描述符
2. **系统级别** → CPU、内存、负载、启动参数、模块、文件系统
3. **硬件级别** → 设备、中断、I/O 端口、内存映射
4. **网络级别** → 接口流量、TCP/UDP 连接、路由、ARP
5. **内核级别** → 内核参数、调度、日志、虚拟内存

---
