top在哪里获得实时数据

Mar*_*ark 10 linux pid process linux-kernel top-command

哪里top申请获得在Linux上的数据?我会对实时CPU负载/ pid数据感兴趣.(我在/ proc/pid手册页中阅读了所有文档,但信息不存在).

pid是一个jboss.我需要轻量级数据(轻松导出).

ado*_*yan 11

如有疑问,请使用strace(1)!

open("/proc/2/stat", O_RDONLY)    = 4
open("/proc/2/statm", O_RDONLY)   = 4
open("/proc/3/stat", O_RDONLY)    = 4
open("/proc/3/statm", O_RDONLY)   = 4
Run Code Online (Sandbox Code Playgroud)


bdo*_*lan 5

proc(5)中所述,在文件中/proc/(pid)/stat您有以下字段:

utime %lu
Run Code Online (Sandbox Code Playgroud)

在用户模式下调度此进程的时间量,以时钟周期计算(除以sysconf(_SC_CLK_TCK).这包括访客时间,guest_time(运行虚拟CPU所花费的时间,见下文),以便不知道的应用程序客人时间字段中的时间不会从计算中消失.

stime %lu
Run Code Online (Sandbox Code Playgroud)

在内核模式下调度此进程的时间量,以时钟周期为单位(除以sysconf(_SC_CLK_TCK)).

要获取特定进程的CPU使用率,请使用这些字段.顶层进程将聚合所有线程的CPU使用率; 对于每个线程的细分,你可以找到其他线程/proc/(pid)/task.

如果您希望在CPU时间超过某个阈值时收到通知,则可以使用clock_getcpuclockid获取其CPU时钟的句柄,然后使用timer_createtimerfd在达到指定级别时收到通知.但请注意,跨进程cputime计时器是POSIX规范中的可选功能,可能不受支持(我没有测试过).