缘由
需要获取某程序运行过程中的内存消耗,一般情况可以使用 top 命令来人工分析,不过我遇到一个程序其内部调用包括 python, R, 以及一系列 linux 命令,这就导致人工统计不太现实
问题变成统计进程及其子进程的内存使用...(linux系统上所有进程都是由其他进程fork来的),不过我们只想查询某个用户下的进程,因此结果会构建成多棵树,只要遍历找到某个树的某个节点为感兴趣的进程id,以此节点作为根节点,遍历整棵树汇总内存即为结果...,父进程ID等,linux 系统可以通过解析 /proc/pid/status 文件来获取
查找某用户所有进程,可使用命令 ps -U username
// monitor_process.cpp
#.../pm 25201 2 监控 id 为25201的进程,刷新间隔为2秒
结果输出:
2020-09-18 17:37:05 1932
2020-09-18 17:37:07 1932
2020-09-18...17:37:09 1932
这里输出的内存单位是 KB
注意:由于需要进程启动之后才能开启监控,导致进程内存无法从0开始;当进程结束,则监控程序也会退出
关于结果展示,直接将输出结果的第二列和第三列拷贝到