/proc和/sys是linux内核在内存中动态构建的两个核心虚拟文件系统,不占磁盘空间、内容实时生成;前者提供进程与内核状态的文本快照(如/proc/[pid]/status、/proc/meminfo),后者基于kobject模型提供结构化设备与驱动配置接口(如/sys/class/net/eth0/、/sys/module/xxx/parameters)。

/proc 和 /sys 是 Linux 内核暴露运行时信息的两个核心通道,它们不占磁盘空间,全部驻留在内存中,内容随系统状态实时生成。监控系统时,选对路径、理解语义差异,才能准确获取所需数据,避免误读或无效操作。
用 /proc 查看“正在发生什么”
/proc 提供的是系统与进程的文本化快照,适合观察当前状态、排查瞬时问题。
-
进程级监控:每个
/proc/[pid]/目录对应一个运行中的进程。常用文件包括:
•status:含内存占用(VmRSS)、线程数(Threads)、运行状态(State);
•fd/:列出打开的文件描述符,配合ls -l可查具体路径和权限;
•stack(需 root):查看内核态调用栈,定位卡死或异常调度。 -
系统级指标:无需安装额外工具即可快速获取关键负载数据:
•/proc/loadavg:三组数字分别代表 1/5/15 分钟平均负载,结合 CPU 核心数判断是否过载;
•/proc/meminfo:重点关注MemAvailable(真正可用内存),而非Free;
•/proc/net/dev:每秒收发字节数、丢包数,用于识别网卡瓶颈。 -
注意只读与可写边界:除
/proc/sys/外,绝大多数/proc文件只读。向/proc/sys/net/ipv4/ip_forward写入 1 可即时开启转发,但该操作不持久,重启后失效。
用 /sys 管理“设备如何被组织与配置”
/sys 不反映状态快照,而是按设备模型(kobject)组织的结构化控制接口,适合精准调整硬件行为。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
-
设备拓扑即路径:路径本身表达层级关系。
•/sys/class/net/eth0/表示网卡逻辑设备;
•/sys/devices/pci0000:00/0000:00:1f.2/对应 PCI 总线物理地址;
• 进入任一设备目录,uevent文件可触发重扫描,power/state可设为on或mem控制电源状态。 -
模块参数独立可控:已加载内核模块的运行时参数集中于
/sys/module/[name]/parameters/。
• 如/sys/module/usbcore/parameters/autosuspend控制 USB 设备自动挂起延迟;
• 修改前需确认模块未被其他驱动强依赖,否则写入可能返回Invalid argument。 -
属性文件语义严格:每个文件通常只接受一种格式值(如字符串、单数字),且权限由内核硬编码。
•/sys/class/scsi_host/host0/scan是只写文件,写入- - -触发全盘扫描;
•/sys/firmware/acpi/interrupts/下各 IRQ 文件只读,数值随中断发生实时递增。
区分 /proc/sys 与 /sys 中的参数含义
两者都可调参,但作用范围与生命周期不同,混用易导致预期外行为。
-
/proc/sys 是全局 sysctl 接口:修改立即生效,影响整个子系统。
•/proc/sys/vm/swappiness调整所有进程的交换倾向;
•/proc/sys/net/core/somaxconn设置监听队列最大长度,影响所有 TCP 服务。 -
/sys/module/xxx/parameters 是模块粒度控制:仅当参数来自可加载模块(非编译进内核)时存在。
• 比如xt_nat模块的zero_checksum参数只在该模块insmod后才出现;
• 卸载模块后,对应路径自动消失,参数恢复默认。 -
网络参数有双重入口但分工明确:
• 全局策略走/proc/sys/net/ipv4/(如ip_forward);
• 单网卡特性走/sys/class/net/eth0/(如speed、duplex),后者只读,反映物理协商结果。
监控不是堆砌命令,而是根据目标选择合适的数据源。看进程资源用 /proc,查设备状态用 /sys;调全局策略用 /proc/sys,控特定模块用 /sys/module;读取要关注实时性,写入要确认权限与副作用。理解这两套路径的设计逻辑,比记住上百个文件路径更有效。










