ps -p {pid} -o etime获取进程运行时间是如何计算出来的?

ps -p 986 -o etime可以获取进程986的执行时间,不论系统时间有没有发生改变,它都可以返回正确的结果:

-bash-4.2$ ps -p 986 -o etime
    ELAPSED
13-00:25:12

以上显示986进程运行了13天25分钟12秒。

可见它累积的是真正的程序运行时间,而不是系统运行时间与进程启动之间之差(这种方式在时间同步等其他会引起系统时间变化的情况下并不准确)。

我查看了/proc/986/stat, /proc/986/status等系统文件,都没有发现对应的进程运行时间的数值,ps -p 986 -o etime到底是如何实现的呢?

转载自:https://segmentfault.com/q/1010000014593304

原文地址:https://www.cnblogs.com/xibuhaohao/p/11474776.html