使用gawk记录一段时间内,某个进程占用内存和CPU的情况

Posted hbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用gawk记录一段时间内,某个进程占用内存和CPU的情况相关的知识,希望对你有一定的参考价值。

很多时候,我们在后台测试程序的时候,都需要隔一段时间监控程序的内存和CPU占用情况,但是又不能经常盯着top命令的输出。 
这时候就需要使用脚本来帮我们记录这些信息,方便我们监控了。

废话不多说,直接上代码:

```shell
#!/bin/bash

FileName="res.txt"
echo "%CPU\t%MEM" > $FileName
for (( i = 0; i < 10; i++ )) do
    output=`top -n 1 -p 1 > tmp`
    res=`gawk ‘{if (NR == 8) { printf "%d\t%d", $10, $11 } }‘ tmp`
    echo "$res" >> $FileName
    sleep 1
done
```

解释一下top的两个参数,-n是让top命令只输出一次,如果不加上这个参数,top命令就会以交互式输出。-p是指定你要监控的程序的进程ID。

再来是gawk的脚本。NR是当前行号(先将top命令的结果重定向到一个文件,然后用vim打举开,就知道想要的数据在第几行,第几个字段),1011分别代表当前行的第10个字段,和第11个字段,也就是CPU和MEM对应的数字

以上是关于使用gawk记录一段时间内,某个进程占用内存和CPU的情况的主要内容,如果未能解决你的问题,请参考以下文章

使用ANTS Performance Profiler&ANTS Memory Profiler工具分析IIS进程内存和CPU占用过高问题

求助,数据库某个进程cpu占用高

如何监视某一进程的CPU占用率

Linux 查看某个进程占用的CPU内存

linux系统编程--进程相关概念

linux 命令ps -aux 查看进程所占内存大小,怀疑一个进程存在内存泄露,每个一段时间,内存大小增加4kB