【问题标题】:How does Linux measure elapsed time of a particular process?Linux 如何测量特定进程的运行时间?
【发布时间】:2021-08-28 21:13:32
【问题描述】:

当我查看ps command manual 时,它提供了每个进程的经过时间测量,无论该进程是否仍然存在。但是,当我检查 /proc//stat 时,它只记录了开始时间、CPU 时间和用户时间。我尝试添加 CPU 时间和用户时间,但结果与经过时间显示的不匹配。因此,我想就测量经过时间的方向寻求建议。

【问题讨论】:

    标签: linux process elapsedtime


    【解决方案1】:

    ps 显示的经过时间只是当前时间-开始时间。所以从字面上看,只是从进程开始以来经过的挂钟时间。

    /proc/stat 中的 utime 和 stime 是进程在系统上实际运行的总时间(用户时间和系统时间)的度量,不包括任何阻塞等待某事所花费的时间。

    【讨论】:

    • 感谢您的指导。根据您的回答,我还有另一个后续问题:如何从其他进程获取进程的结束时间,因为当该进程仍在运行时,我可能并不总是使用诸如 waitpid/poll/epoll 等待之类的监视器机制。如果我想在这个过程死后得到它的生命周期。我可以从 linux 内核中获得什么信息,或者我必须在该进程退出之前为其添加时间戳快照?
    • 获取任意其他进程信息的唯一(简单)方法是读取 /proc/pid/stat(或其他 /proc/pid 文件)——wait 只能用于子进程。当一个进程死亡时,它变成了一个僵尸并且它的统计信息仍然可以被读取,直到它的父进程收集它并且进程完全消失。如果您尝试监控不是您孩子的进程,则可能会与父母正在做的事情发生竞争。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2011-08-09
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多