Linux下/proc/[pid]/status 进程参数介绍

近期一直在 CentOS 服务器上搭些环境,实践中总能发现很多知识缺口,就整理并在此记录下。

想看看 Linux 进程的详细状态,是因为最近用 VirtualBox 搭虚拟环境,3个虚拟机同时启动后,宿主机经常自动重启,频率较高。宿主机是 Windows Server 2008 X64 ,网上查了确有类似问题,但我用的VirtualBox 是较新的版本,应该是没有网上所说的 Bug。所以觉得还是自己配置的问题,问题算比较低级,基本上就是内存分配过低导致的,遂将虚拟机的内存调大,再观察几日。

为了日后能对内存分配有较准确的一次把握能力,应该要对服务器上的进程运行状态有个大致的了解,因而必然需要一个了解的途径。 命令 less /proc/[pid]/status 就可查看详细的 Linux 进程信息。

Name 进程名

State 运行/睡眠/僵死/

SleepAVG 平均等待时间(单位:nanosecond)

Tgid 线程组号

Pid 进程ID

PPid 父进程ID

TracerPid 跟踪进程ID

Uid Uid euid suid fsuid

Gid Gid egid sgid fsgid

FDSize 文件描述符的最大个数

Groups 启动该进程的用户所属的组的id

VmPeak(KB) 进程地址空间的大小

VmSize(KB) 任务虚拟地址空间的大小

VmLck(KB) 任务已经锁住的物理内存的大小  ##锁住的物理内存不能交换到硬盘

VmHWM(KB) 文件内存映射和匿名内存映射的大小

VmRSS(KB) 应用程序正在使用的物理内存的大小,即ps命令的参数rss的值

VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据

VmStk(KB) 进程在用户态的栈的大小

VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库

VmLib(KB) 被映像到任务的虚拟内存空间的库的大小

VmPTE(KB) 该进程的所有页表的大小

VmSwap(KB)

Threads 共享使用该信号描述符的任务的个数

SigQ 待处理信号的个数 / 目前最大可以处理的信号的个数

SigPnd 屏蔽位,存储了该线程的待处理信号

ShdPnd 屏蔽位,存储了该线程组的待处理信号

SigBlk 存放被阻塞的信号

SigIgn 存放被忽略的信号

SigCgt 存放被俘获到的信号

CapInh 能被当前进程执行的程序的继承的能力

CapPrm 进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃

CapEff 进程的有效能力,是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性

CapBnd 系统的边界能力,无法改变

Cpus_allowed 进程可使用的CPU的亲和性掩码,指定为两块CPU为3,如指定为4个CPU就是F(1111)

Cpus_allowed_list 进程可以使用CPU的列表

Mems_allowed 类似Cpus_allowed

Mems_allowed_list 类似Cpus_allowed_list

voluntary_ctxt_switches 进程主动切换的次数

nonvoluntary_ctxt_switches 进程被动切换的次数

——

人生永远追逐着幻光,但谁把幻光看作幻光,谁便沉入无边的苦海。