proc 是一个虚拟文件系统,在Linux 系统中它被挂载于/proc 目录之上。proc 有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux 变得更加特别的功能就是以文本流的形式来访问进程信息。很Linux 命令( 比如 ps 、toPpstree 等) 都需要使用这个文件系统的信息。
/proc/[pid]/maps
显示进程内存区域映射信息
> cat /proc/1751/maps
00400000-00401000 r-xp 00000000 fd:01 100897359 /opt/java/jdk1.8.0_231/bin/java
00600000-00601000 r--p 00000000 fd:01 100897359 /opt/java/jdk1.8.0_231/bin/java
00601000-00602000 rw-p 00001000 fd:01 100897359 /opt/java/jdk1.8.0_231/bin/java
01542000-01563000 rw-p 00000000 00:00 0 [heap]
6c7c00000-6e0100000 rw-p 00000000 00:00 0
6e0100000-76d400000 ---p 00000000 00:00 0
76d400000-797580000 rw-p 00000000 00:00 0
797580000-7c0000000 ---p 00000000 00:00 0
7c0000000-7c18a0000 rw-p 00000000 00:00 0
7c18a0000-800000000 ---p 00000000 00:00 0
[stack] 初始进程(主线程)的stack
[stack:<tid>] 线程ID为tid的stack. 对应于/proc/[pid]/task/[tid]/路径
[vdso] Virtual Dynamically linked Shared Object
[heap] 进程的heap
/proc/[pid]/root
是进程根目录的符号链接
> ls -al /proc/1751/root
lrwxrwxrwx 1 root root 0 Jul 14 22:38 /proc/1751/root -> /
/proc/[pid]/stack
显示当前进程的内核调用栈信息,只有内核编译时打开了CONFIG_STACKTRACE编译选项,才会生成这个文件
> cat /proc/1751/stack
[<ffffffffa4112496>] futex_wait_queue_me+0xc6/0x130
[<ffffffffa411323b>] futex_wait+0x17b/0x280
[<ffffffffa4114fa6>] do_futex+0x106/0x5a0
[<ffffffffa41154c0>] SyS_futex+0x80/0x190
[<ffffffffa4793f92>] system_call_fastpath+0x25/0x2a
[<ffffffffffffffff>] 0xffffffffffffffff
/proc/[pid]/statm
显示进程所占用内存大小的统计信息,包含七个值,度量单位是page(page大小可通过getconf PAGESIZE得到)
> cat /proc/1751/statm
2507998 361498 1427 1 0 2466085 0
/proc/1751/status
当前shell命令所在进程的信息
> cat /proc/1751/status
Name: java
Umask: 0022
State: S (sleeping)
Tgid: 1751
Ngid: 0
Pid: 1751
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0
VmPeak: 10064696 kB
VmSize: 10031992 kB
/proc/1751/syscall
显示当前进程正在执行的系统调用
> cat /proc/1751/syscall
202 0x7fefc50279d0 0x0 0x6d8 0x0 0x0 0x7fefc5027700 0x7ffdb03f6e38 0x7fefc4c03fd7
第一个值是系统调用号(7代表poll),后面跟着6个系统调用的参数值(位于寄存器中),最后两个值依次是堆栈指针和指令计数器的值。如果当前进程虽然阻塞,但阻塞函数并不是系统调用,则系统调用号的值为-1,后面只有堆栈指针和指令计数器的值。如果进程没有阻塞,则这个文件只有一个“running”的字符串。
内核编译时打开了CONFIG_HAVE_ARCH_TRACEHOOK编译选项,才会生成这个文件。
/proc/1751/wchan
显示当进程休眠时,内核当前运行的函数
> cat /proc/1751/wchan
futex_wait_queue_me
/proc/[pid]/task
,目录,每个线程一个子目录,目录名为线程ID。/proc/[pid]/stat
,文件,进程状态信息,用于ps命令。/proc/[pid]/uid_map
,文件,用户ID映射信息,详见(man user_namespaces)。/proc/[pid]/gid_map
,文件,组ID映射信息,详见(man user_namespaces)。/proc/[pid]/mountinfo
,文件,挂载信息,格式为36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue,以空格作为分隔符,从左到右各字段的意思分别是唯一挂载ID、父挂载ID、文件系统的设备主从号码、文件系统中挂载的根节点、相对于进程根节点的挂载点、挂载权限等挂载配置、可选配置、短横线表示前面可选配置的结束、文件系统类型、文件系统特有的挂载源或者为none、额外配置。/proc/[pid]/mounts
,文件,挂载在当前进程的文件系统列表,格式参照(man fstab)。/proc/[pid]/mountstats
,文件,挂载信息,格式形如device /dev/sda7 mounted on /home with fstype ext3 [statistics]。/proc/[pid]/ns/
,目录,保存了每个名字空间的入口,详见(man namespaces)。相关文章
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有