ls /proc/:Linux内核的实时窗口
/proc 不是普通“文件夹”,而是 Linux 内核现场暴露的“实时信息窗口”——一个纯内存的伪文件系统(procfs)。 里面没有一个文件是真磁盘文件,每读一次,内核就即时生成数据;写进去,就是直接给内核发参数。形象地说:/proc 是内核的“调试仪表板”,随系统运行动态变化,关机即空。
挂载与本质:
类型:procfs,开机由 systemd 或 init 自动挂载到 /proc。查看确认:mount | grep proc 可见 proc on /proc type proc (rw,relatime)。体积:不占磁盘,du -sh /proc 永远显示 0;所有文件大小为 0,但 cat 就能读出内容。一级“明星文件/目录”速览:
/proc/cpuinfo:当前 CPU 型号、核心数、 flags、缓存等。/proc/meminfo:内存总量、空闲、缓存、Swap、内核动态分配。/proc/loadavg:1/5/15 分钟平均负载 + 正在运行/等待进程数。/proc/uptime:系统已运行秒数 + 空闲秒数。/proc/version:内核版本 + 编译主机 + GCC 版本。/proc/cmdline:本次启动传给内核的 boot 参数。/proc/filesystems:内核当前已注册的文件系统类型。/proc/modules:已加载内核模块列表。/proc/partitions:块设备分区表。/proc/sys/:可写的内核参数目录(等价 sysctl )。/proc/<PID>/:每个运行进程一个子目录,名字就是 PID。进程目录 /proc/<PID> 常用文件:
cmdline——启动命令行参数(以 \0 分隔)。cwd——软链,指向进程当前工作目录。exe——软链,指向正在执行的二进制文件。fd/——目录,列出进程打开的所有文件描述符(软链)。status——可读性最好的进程状态:UID/GID、内存、信号掩码等。maps——内存映射详情,调内存泄漏、找 so 注入必看。limits——当前生效的 ulimit 值。environ——进程环境变量( \0 分隔)。可写接口(现场调内核参数)
echo 1 > /proc/sys/net/ipv4/ip_forward # 临时开内核转发echo 65536 > /proc/sys/fs/file-max # 临时提高全局文件句柄上限
等效于 sysctl -w key=value ,重启失效;永久改需写 /etc/sysctl.conf 。
使用场景一句话:
看资源: cat /proc/meminfo 比 free -k 更原始。查进程: ls -l /proc/$PID/fd 立刻知道进程打开了哪些文件。调参数: echo deadline > /sys/block/sda/queue/scheduler 也是同原理。抓故障:程序突然消失, /proc 里对应目录立即消失,可用来判断存活。注意事项:
别用 vim 直接保存 /proc 文件——内容都在内存,重启即丢。不同内核版本字段会有增减,脚本解析最好带容错。容器里看到的 /proc 是被隔离过的,部分文件内容跟宿主机不同。一句话总结:
/proc 是内核的“活体仪表盘”:只读文件=实时状态,可写文件=立即调参,进程子目录=瞬间快照,关机即空,读它就是在问内核“现在发生了什么”。
版权声明:本文转载于今日头条,版权归作者所有,如果侵权,请联系本站编辑删除
