使用gawk記錄一段時間內,某個進程佔用內存和CPU的狀況

不少時候,咱們在後臺測試程序的時候,都須要隔一段時間監控程序的內存和CPU佔用狀況,可是又不能常常盯着top命令的輸出。 
這時候就須要使用腳原本幫咱們記錄這些信息,方便咱們監控了。shell

廢話很少說,直接上代碼:vim

```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。bash

再來是gawk的腳本。NR是當前行號(先將top命令的結果重定向到一個文件,而後用vim打舉開,就知道想要的數據在第幾行,第幾個字段),1011分別表明當前行的第10個字段,和第11個字段,也就是CPU和MEM對應的數字測試

相關文章
相關標籤/搜索