1. 程式人生 > 其它 >Linux命令:實時檢視某個程式佔用記憶體的變化

Linux命令:實時檢視某個程式佔用記憶體的變化

詳解

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

  • 檢視一個或多個程序執行資訊

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

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

非互動模式下b,輸出一次n 1,一個或多個程序的執行資訊,輸出結果如下:

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

保留關鍵資訊:$6程序佔用的實體記憶體,$10程序使用實體記憶體與總記憶體的百分比,$12程序啟動命令名稱

如果存在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}'

再列印一些輸出提示,為了更加好看,順便把記憶體大小轉換為單位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)}'
  • 使用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

經整理後

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去掉