/proc 文件系统内核的 “实时状态面板”/proc是一个伪文件系统里面的文件不是真存在硬盘上而是内核实时生成的用来暴露内核状态、进程信息、硬件信息、系统参数。下面按类别给你讲清楚有啥、干啥用、怎么看。一、进程相关最常用/proc/[PID]/每个进程一个目录比如/proc/1是 init/systemd。里面常用文件cmdline启动命令cwd当前工作目录environ环境变量fd/打开的文件描述符查句柄泄漏maps内存映射库、堆、栈status进程状态、PID、PPID、内存、线程数stat/statm更精简的状态 / 内存信息ioIO 读写统计用途查进程卡死、内存泄漏、句柄泄漏看进程到底在干嘛二、系统全局信息/proc/cpuinfoCPU 型号、核心数、架构、特性ARM/x86 都能用/proc/meminfo内存总大小、空闲、缓存、交换分区看内存够不够最准。/proc/loadavg1/5/15 分钟系统负载判断系统忙不忙。/proc/uptime系统开机时间。/proc/version内核版本、gcc 版本。/proc/cmdline内核启动参数bootargs。三、硬件与设备/proc/interrupts中断统计看哪个硬件在频繁触发中断。/proc/ioportsI/O 端口占用x86 常用。/proc/dmaDMA 通道使用情况。/proc/mounts当前挂载的所有文件系统比 mount 命令更原始。/proc/partitions块设备分区信息类似 lsblk。四、网络相关/proc/net/dev网卡流量统计/proc/net/tcp、/proc/net/udpTCP/UDP 连接列表比 netstat 底层/proc/net/arpARP 表/proc/sys/net/...网络参数丢包、转发、端口范围等五、可读写的系统配置sysctl/proc/sys/可以直接读写内核参数不用重启。常见/proc/sys/net/ipv4/ip_forward开启 / 关闭 IP 转发/proc/sys/fs/file-max最大打开文件数/proc/sys/vm/swappiness交换分区使用倾向用法cat /proc/sys/net/ipv4/ip_forward echo 1 /proc/sys/net/ipv4/ip_forward六、调试 / 内核信息/proc/kmsg内核日志dmesg 就是读它/proc/slabinfo内核内存池分配查内核内存泄漏/proc/modules已加载内核模块lsmod 读的就是它/proc/filesystems支持的文件系统类型/proc/locks文件锁七、简单总结最实用版查进程→/proc/[PID]查 CPU / 内存 / 负载→ cpuinfo、meminfo、loadavg查网络→ net/tcp、net/udp、net/dev查硬件 / 中断→ interrupts、partitions改内核参数→/proc/sys查内核日志→ kmsg查挂载 / 模块→ mounts、modules一句话/proc 就是内核把自己的内脏摊开给你看还允许你实时调参数。/proc/[PID]/直接给你列/proc/[PID]/ 下最常用、调试必看的文件按用途分类一看就懂。一、进程基本信息status进程状态、PID、PPID、UID、GID、内存、线程数、信号掩码等。最常用。stat更精简的状态信息给程序读的。statm内存页信息。cmdline启动进程的完整命令行参数。cwd软链接 → 当前工作目录。exe软链接 → 可执行文件真实路径。environ进程环境变量。二、文件与句柄查泄漏神器fd/目录里面是进程打开的所有文件描述符0 标准输入1 输出2 错误其他是文件 / 套接字 / 设备。数量暴增 句柄泄漏。fdinfo/每个 fd 的详细信息。maps内存映射库、堆、栈、动态库地址。smaps更详细的内存占用按区域统计。三、线程相关task/里面每个子目录对应一个线程TID结构和 PID 目录一样。四、调度与性能sched调度信息、运行时间、切换次数。schedstat调度统计。oom_adj/oom_score_adjOOM 杀死优先级。五、IO 相关io进程读写字节数、块 IO 次数。六、网络 / 套接字相关查端口归属net/tcp/udp等在/proc/net但进程目录里可以通过fd/看到 socket 链接配合lsof/ls -l /proc/PID/fd能查到端口。七、调试专用wchan进程当前在内核中睡眠的函数排查 D 状态卡死非常有用。stack内核栈需要 root看内核层卡在哪。syscall当前阻塞在哪个系统调用。八、最常用的 8 个调试必背status看状态、内存、线程fd/看打开文件 / 句柄泄漏exe看程序路径cmdline看启动参数maps看库、内存布局cwd看当前目录io看磁盘读写wchan/stack看进程卡在哪一句话记住/proc/[PID]/ 就是把一个进程的所有状态摊开给你看调试卡死、泄漏、异常全靠它。常用调试手段一、先记住一句话/proc 是内核实时 “体检表”所有内容不占硬盘、开机才有、瞬间生成。调试思路就 3 条看系统有没有病CPU / 内存 / 中断 / 负载看进程是不是疯了卡死、泄漏、死循环看驱动 / 硬件有没有在干活中断、IO、模块二、系统级调试最常用1. 看系统是不是卡爆了cat /proc/loadavg输出0.12 0.25 0.31分别是 1/5/15 分钟负载。负载 CPU 核心数 → 系统忙死了。2. 看 CPU 是不是被占满cat /proc/cpuinfo cat /proc/stat看有没有核心一直 100%。3. 看内存是不是爆了OOM 前兆cat /proc/meminfo重点看MemFree空闲Buffers/Cached缓存SwapUsed交换分区使用内存持续走低 卡顿 内存泄漏。4. 看内核启动参数对不对设备树、驱动传参cat /proc/cmdline驱动 / 设备树出问题经常是这里参数错了。5. 看内核日志排查驱动挂掉cat /proc/kmsg # 等价 dmesg驱动 probe 失败、中断异常、Oops 全都在这里。三、进程调试查卡死、崩溃、泄漏1. 找到可疑 PIDps aux2. 看这个进程到底在干嘛cat /proc/1234/cmdline3. 看进程内存映射为什么占内存cat /proc/1234/maps4. 看进程打开了哪些文件句柄泄漏ls /proc/1234/fd数量几百上千 文件句柄泄漏。5. 看进程状态是不是僵死 / 阻塞cat /proc/1234/status重点State: R运行 S睡眠 D不可中断阻塞 Z僵尸D 状态 驱动 / IO 卡死6. 看进程线程数cat /proc/1234/status | grep Threads线程暴涨 代码 BUG。四、驱动 / 硬件调试你最需要的1. 看硬件中断有没有触发红外、按键、网卡cat /proc/interrupts数字一直涨 硬件在发中断数字不动 硬件没工作 / 驱动没注册中断2. 看内核模块加载没你的驱动在不在cat /proc/moduleslsmod命令的来源。3. 看挂载是否正常rootfs、分区cat /proc/mounts4. 看块设备 / 分区EMMC、SD、U 盘cat /proc/partitions5. 看门设备被哪些驱动占用cat /proc/iomem cat /proc/ioports寄存器地址冲突一看就知道。五、网络调试网卡、TCP、丢包1. 看网卡流量cat /proc/net/dev2. 看 TCP 连接是否大量异常连接cat /proc/net/tcp cat /proc/net/udp3. 看 ARP 表cat /proc/net/arp六、改内核参数实时调试不用重启打开 / 关闭 IP 转发echo 1 /proc/sys/net/ipv4/ip_forward调整最大打开文件数echo 65535 /proc/sys/fs/file-max调整 OOM 行为cat /proc/sys/vm/panic_on_oom七、最经典的 8 条调试命令直接背cat /proc/meminfo # 内存 cat /proc/loadavg # 负载 cat /proc/cpuinfo # CPU cat /proc/interrupts # 硬件中断驱动调试神器 cat /proc/modules # 模块 cat /proc/kmsg # 内核日志 cat /proc/[PID]/status # 进程状态 cat /proc/cmdline # 内核启动参数更多待补充