/proc/[pid]/是干什么的?
系统中当前运行的每一个进程都有对应的一个目录在proc下,以进程的PID号为目录名,它们是读取进程信息的接口。
/proc/[pid]/下的文件作用
参考《Linux就该这么学》
我这里稍微提一下:
- cmdline、exe
这两个可以找到执行的参数与执行的程序位置(就算已经被删除也能看到)。 - environ
可以看到这个进程所使用的环境变量 - fd
这个目录可以在操作系统文件描述符被占尽的时候看进程占用了哪些。 - status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25FDSize: 256---------------------------------表示到目前为止进程使用过的描述符总数。
VmPeak: 1393220 kB--------------------------虚拟内存峰值大小。
VmSize: 1390372 kB--------------------------当前使用中的虚拟内存,小于VmPeak。
VmHWM: 47940 kB-----------------------------RSS峰值。
VmRSS: 47940 kB-----------------------------RSS实际使用量=RSSAnon+RssFile+RssShmem。
RssAnon: 38700 kB
RssFile: 9240 kB
RssShmem: 0 kB
VmData: 366648 kB--------------------------进程数据段共366648KB。
VmStk: 132 kB------------------------------进程栈一共132KB。
VmExe: 84 kB-------------------------------进程text段大小84KB。
VmLib: 11488 kB----------------------------进程lib占用11488KB内存。
VmPTE: 1220 kB
VmPMD: 0 kB
VmSwap: 0 kB
Threads: 40-------------------------------进程中一个40个线程。
SigQ: 0/3142------------------------------进程信号队列最大3142,当前没有pending状态的信号。
SigPnd: 0000000000000000------------------没有进程pending,所以位图为0。
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000006------------------被忽略的信号,对应信号为SIGINT和SIGQUIT,这两个信号产生也不会进行处理。
SigCgt: 0000000180000800------------------已经产生的信号位图,对应信号为SIGUSR2、以及实时信号32和33。
Cpus_allowed: 1---------------------------仅在第1个cpu上执行。
Cpus_allowed_list: 0
voluntary_ctxt_switches: 2377-------------线程主动切换2377次,被动切换5次。 - maps、smaps
显示进程的内存区域映射信息。
总结
/proc/[pid]/帮助我们更好的了解进程对资源的调度,我们通过其也能更好的了解进程的情况。