/proc 是 Linux 系统中一个特殊的虚拟文件系统(procfs),它不占用实际磁盘空间,而是由内核动态生成,用于提供内核和进程信息的实时接口。以下是关于 /proc 的详细解析:
动态生成
0,因为数据仅在被读取时存在。层次化结构
/proc/cpuinfo、/proc/meminfo、/proc/version 等。/proc/<PID>/,包含其内存映射、打开文件、运行状态等(如 /proc/1/status 表示 PID 为 1 的进程)。可读写性
bash
echo 1 > /proc/sys/net/ipv4/ip_forward # 启用IP转发| 路径 | 用途说明 |
|---|---|
/proc/cpuinfo |
CPU 的型号、核心数、频率等。 |
/proc/meminfo |
系统内存使用情况(总量、空闲、缓存等)。 |
/proc/loadavg |
系统负载(1/5/15 分钟的平均值)。 |
/proc/filesystems |
内核支持的文件系统类型。 |
/proc/net/ |
网络协议栈信息(如 TCP/UDP 连接、路由表)。 |
/proc/<PID>/cmdline |
进程的启动命令。 |
/proc/<PID>/fd/ |
进程打开的文件描述符列表。 |
/proc/sys/ |
内核参数配置(需 sysctl 命令或直接写入文件修改)。 |
查看 CPU 信息
cat /proc/cpuinfo
监控内存使用
cat /proc/meminfo | grep "MemTotal\|MemFree"
调整内核参数
# 临时开启内核路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效需修改 /etc/sysctl.conf
分析进程资源
ls /proc/1234/ # 查看PID为1234的进程详情
cat /proc/1234/status | grep "VmRSS" # 获取进程内存占用
/proc 暴露系统底层信息,需限制非特权用户访问敏感文件(如 /proc/kcore 是物理内存的镜像)。top、ps、free 等命令的数据实际来源于 /proc。/proc 中的修改会丢失,持久化配置需通过 /etc/sysctl.conf 或系统服务。/sys:/sys(sysfs)同样为虚拟文件系统,但更侧重于设备驱动和硬件层级的信息管理。devfs:/dev 提供设备文件接口,而 /proc 更关注内核和进程状态。通过 /proc,Linux 将内核数据以文件形式暴露给用户空间,极大简化了系统监控和调优的操作。