Linux命令:實時查看某個程序占用內存的變化


image

詳解

一個程序可以包含一個進程或多個進程, 一個進程可以執行一個或多個程序

  • 查看一個或多個進程運行信息

開頭演示的例子解釋,Agent程序由多個進程共同來進行,以\|(邏輯關系中是“或”的意思)區分開來,即qt-client\|sys-app\|clamd

top -b n 1| grep 'qt-client\|sys-app\|clamd'

非交互模式下b,輸出一次n 1,一個或多個進程的運行信息,輸出結果如下:
image

  • 使用awk進行數據處理
top -b n 1 | grep 'qt-client\|sys-app\|clamd'|awk '{print $6,$10,$12}'

保留關鍵信息:$6進程占用的物理內存,$10進程使用物理內存與總內存的百分比,$12進程啟動命令名稱
image

如果存在2個及以上進程時,做累加運算,執行如下命令行,分別指定了三個進程為qt-client、sys-app、clamd

top -b n 1| grep 'qt-client\|sys-app\|clamd'|awk '{a+=$6;b+=$10}END{print a,b}'

image
累加后,你會發現這里並沒有打印$12即啟動的進程名字,因為這里是做累加,也就是把多個行結果合並成一行結果,類似SQL里面的聚合運算,即使指定了$12也只會輸出其中一個進程名字,達不到我們想要的效果,所以這里不做打印輸出。

再打印一些輸出提示,為了更加好看,順便把內存大小轉換為單位M的形式

top -b n 1| grep 'qt-client\|sys-app\|clamd'|awk '{a+=$6;b+=$10}END{printf("xxx程序占用本地內存大小為: %2.fM\n",a/1024);printf("xxx程序占用本地內存百分比為:%.2f%%\n",b)}'

image

  • 使用while循環語句實時輸出
while true;do sleep 1;top -b n 1| grep 'qt-client\|sys-app\|clamd'|awk '{a+=$6;b+=$10}END{printf("xxx程序占用本地內存大小為: %2.fM\n",a/1024);printf("xxx程序占用本地內存百分比為:%.2f%%\n",b)}';done

image

經整理后

count=1;while true;do echo "執行次數:$count";((count=$count+1));sleep 1;top -b n 1| grep 'qt-client\|sys-app\|clamd'|awk '{a+=$6;b+=$10}END{printf("Agent程序占用本地內存大小為: %2.fM\n",a/1024);printf("Agen程序占用本地內存百分比為:%.2f%%\n",b)}';done

每次執行從1計數,如果你想接着上一次結束的地方繼續計算,可以把count=1去掉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM