Linux /proc/pid 探索
1. 引言
简介:
/proc
文件系统是 Linux 提供的一个伪文件系统,用于内核和用户态之间交互。/proc/<pid>
目录表示某个进程的运行时信息,其中<pid>
为进程号。
2. /proc/<pid>
的整体结构
ls /proc/<pid>
(常见文件如cmdline
,cwd
,environ
,fd/
,maps
,status
等)。简单分类:
进程基本信息
内存映射相关
文件描述符相关
调试/性能统计信息
3. 进程基本信息类文件
cmdline
:进程启动命令行参数。comm
:进程名。exe
:可执行文件路径(符号链接)。status
:进程状态、PID、PPID、UID/GID、线程数等。stat
:更详细的数值型状态字段。
4. 文件系统与工作目录
cwd
:进程当前工作目录(符号链接)。root
:进程看到的根目录。
5. 环境变量与资源限制
environ
:进程环境变量(strings /proc/<pid>/environ | less
)。limits
:进程的资源限制(如最大文件数、内存限制、core dump 大小)。
6. 文件描述符与 I/O
fd/
:文件描述符目录,每个数字表示一个 FD,符号链接指向实际文件/socket/pipe(ls -l /proc/<pid>/fd
)。fdinfo/
:文件描述符详细信息(offset、flags 等)。
7. 内存相关
maps
:进程虚拟内存映射情况(堆、栈、共享库等)。smaps
:内存详细统计,包括 RSS、PSS、共享/私有内存等。
Smaps
8. 线程与任务
task/
:包含进程所有线程的子目录,每个线程有类似的/proc/<tid>
。展示一个多线程进程的
ls /proc/<pid>/task
。
9. 调试与性能分析
sched
:调度器信息(调度策略、优先级、运行统计)。statm
:进程内存使用情况简要统计。stack
:内核栈回溯(需 root)。wchan
:进程在内核中睡眠的位置。