/proc/$PID/stat详解

在proc文件系统中有对每个进程维护一个目录/proc/$PID/,其中的/proc/$PID/stat文件展示了该进程的状态。
在某及其上的某进程状态如下

对/proc/$PID/stat的解释如下:(在最新的Linux kernel 3.4.0,在2.6.32中也是类似的)
第1列 表示进程的PID
第2列 表示进程的名称
第3列 表示进程的状态 (这里的S表示Sleep,关于进程的状态,可以后续再来篇博客介绍一下)
第4列 表示进程的PPID,即父进程的PID
……
第18列 表示进程的优先级
第19列 表示进程的nice值
第20列 表示进程的线程数量
第21列 (已被硬编码为0) The time in jiffies before the next SIGALRM is sent to the process due to an interval timer.
第22列 表示进程的启动时间,这个时间是用jiffies表示的从系统启动到进程启动的时间。The time in jiffies the process started after system boot.
……

我前面有文章“”用到了第22列(进程的启动时间),它的值需要除以$(getconf CLK_TCK)的值才能得到以秒为单位的(从系统启动到进程启动)的时间间隔。

/proc/$PID/stat的输出结构,可以在kernel代码的fs/proc/array.c文件中去查看。下面简单看一下array.c这个文件:

在Linux3.4.0中,fs/proc/array.c中的do_task_stat函数中将打印某个进程的status.可以看到第22个位进程的开始时间

关于/proc/$PID/stat的信息,可以man proc得到更多的详细解释。

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*