/proc 直读是什么
内核通过 /proc 暴露进程的一手信息:状态与内存、启动命令行、环境变量、IO 统计与打开的描述符。相比汇总视图,这里给出的是原始现场,适合需要精确证据的排查与取证场景。
基本信息
| 用途 | 直接读取内核暴露的进程信息 |
|---|---|
| 路径 | /proc/进程号/ 下的若干文件 |
| 权限 | 读取其他用户的进程信息通常需要 root |
| 适用 | Linux procfs |
典型使用场景
- 精确取证:拿到启动参数与环境变量的原始内容
- 内存分析:查看常驻内存、虚拟内存与线程数
- IO 归因:读取进程累计读写字节数,判断是否在大量读写
- 描述符排查:列出打开的文件与套接字,定位占用来源
- 容器与命名空间:查看进程所属控制组与命名空间信息
常用示例
常用示例
cat /proc/1234/status | grep -E 'Name|State|VmRSS|Threads'
cat /proc/1234/cmdline | tr '\0' ' '; echo
cat /proc/1234/io
ls -l /proc/1234/fd | head
cat /proc/1234/cgroup常用文件
| 文件 | 内容 | 用途 |
|---|---|---|
| 状态文件 | 状态、内存、线程数 | 概览式核对 |
| 命令行文件 | 启动参数 | 以空字符分隔 |
| 环境变量文件 | 环境变量 | 可能含敏感信息 |
| IO 文件 | 累计读写字节与次数 | 判断 IO 压力来源 |
| 描述符目录 | 打开的文件与套接字 | 定位占用来源 |
| 控制组文件 | 所属控制组 | 确认资源限制与容器归属 |
环境变量文件可能包含口令与令牌,读取与展示都要遵守数据合规要求,不要外发原文。
启动命令行的参数之间以空字符分隔,直接查看会连成一行,先转换成空格再阅读。
进程退出时对应目录立即消失,取证类读取要尽快完成,必要时先让进程暂停。
内存字段含义不同:常驻内存反映实际占用,虚拟内存包含映射部分但未必占用物理页,评估占用要看前者。
描述符目录里的链接指向真实目标路径,用它定位进程占用的日志文件与套接字非常直接。
读取其他用户的进程文件需要 root 权限,普通用户只能看到属于自己的进程目录。