Android 12 解析/proc/pid进程参数

时光旅人 2024-11-30 ⋅ 17 阅读

引言

在 Android 系统中,/proc 文件系统为用户空间和内核空间之间提供了一种通信的方式。每个正在运行的进程都有一个对应的文件夹,以进程的 PID 命名,在该文件夹下可以找到与该进程相关的各种信息和参数。本篇博客将解析 Android 12 中 /proc/pid 进程参数的含义,并提供详细的解释和示例。

1. /proc/pid/cmdline

该文件包含了运行该进程的命令行参数,以空格分隔。

示例:

system_server com.android.server.SystemServer

2. /proc/pid/stat

该文件包含了进程的状态信息,各个字段由空格分隔。

示例:

326 (system_server) S 1 326 0 34816 2752 0 0 0 0 0 0 0 0 20 0 1 0 2 0 615028 37185536 1342 4294967295 134512640 134513720 3210917792 3210916048 1398094598106 0 0 0 0 0 4131904 655376 0 0 17 1 0 0 32 4294967295

字段解释:

  • 1:进程 ID
  • 2:进程命令名,包含在括号中
  • 3:进程状态,具体含义见下表
  • 4~53:各种统计信息,如进程运行状态、调度信息等

进程状态解释:

  • R:运行中
  • S:睡眠中
  • D:不可中断的睡眠
  • Z:僵尸进程
  • T:停止或跟踪进程
  • X:死掉的进程

3. /proc/pid/status

该文件包含了有关进程状态的详细信息,以键值对的形式展示。

示例:

Name:   system_server
State:  S (sleeping)
Tgid:   326
Ngid:   0
Pid:    326
PPid:   1
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 128
Groups: 3003 1004 1007 1011 1028
VmPeak:     34816 kB
VmSize:     34816 kB
VmLck:         0 kB
VmPin:         0 kB
...

字段解释:

  • Name:进程名
  • State:进程状态
  • Tgid:线程组 ID
  • Pid:进程 ID
  • PPid:父进程 ID
  • TracerPid:跟踪该进程的进程 ID
  • Uid:用户 ID
  • Gid:用户组 ID
  • VmPeak:进程占用的虚拟内存峰值
  • VmSize:进程占用的虚拟内存大小

4. /proc/pid/environ

该文件包含了进程的环境变量,以 null 字符分隔。每个环境变量以“变量名=值”的形式表示。

示例:

USER=rootTERM=xtermPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=/rootLANG=en_US.UTF-8HOME=/root...

5. /proc/pid/maps

该文件包含了进程的内存映射信息,用于查看进程的内存分布和使用情况。

示例:

55018000-55019000 r--p 00000000 fd:01 3983615                            /system/lib/libdl.so
55019000-55023000 r-xp 00001000 fd:01 3983615                            /system/lib/libdl.so
55023000-55025000 r--p 0000a000 fd:01 3983615                            /system/lib/libdl.so
55025000-55026000 rw-p 0000c000 fd:01 3983615                            /system/lib/libdl.so
...

字段解释:

  • 起始地址-结束地址:映射的内存地址范围
  • 权限标志:r(可读)、w(可写)、x(可执行)
  • 文件偏移:内存映射的文件偏移
  • 设备号:表明在哪一个设备上
  • 节点号:指向具体的文件名

结论

/proc/pid 进程参数提供了深入了解 Android 系统中进程的方法。通过解析 cmdline、stat、status、environ 和 maps 文件,我们可以获得进程的命令行参数、状态信息、环境变量和内存映射等重要详情。这些信息对于系统调优、性能分析和问题排查都非常有价值。

欢迎大家探索更多 /proc 目录下的文件,以深入理解 Android 系统的内部工作原理。


全部评论: 0

    我有话说: