/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 将内核数据以文件形式暴露给用户空间,极大简化了系统监控和调优的操作。