我想通过 PID 获取进程的 task_struct,因为我需要监控应用程序的计时字段。不创建模块就可以吗?如果没有,有没有办法获取进程的启动时间,他在用户和内核模式下的执行时间,他的最后一次执行......等
答案1
task_struct 没有直接暴露,但 /proc/ 中有很多可用的内容PID,记录在过程(5)。特别是/proc/PID/stat 有许多如下所示的字段。
663969 (bash) S 255279 663969 663969 34836 721047 4194304 1103 125311 1 2396 1 2 2385 4333 20 0 1 0 152947991 9584640 1123 18446744073709551615 94761163685888 94761164450717 140730124580704 0 0 0 65536 3686404 1266761467 0 0 0 17 0 0 0 5 0 0 94761164686000 94761164733764 94761175252992 140730124584237 140730124584243 140730124584243 140730124586990 0
基于1的字段包括PID 663969(字段1)、PPID 255279(字段4)、用户空间1(字段14)和系统空间2(字段15)中的执行时间以及开始时间152947991(字段22)以时钟滴答声为单位)。不清楚是什么last execution
意思。