LINUX檢查乙個程序記憶體增長的指令碼

2021-09-10 03:33:49 字數 1646 閱讀 3621

記憶體洩露很難查。

1、記憶體有沒有洩露?

2、內存在**洩露?

# ps -a | grep $ | awk ''

get_pid()

" = "" ] ; then

pid=0

echo $

return 0

fi# 得到程序號之後的空格

pos=`expr index "$text" " "`

pos=`expr $pos - 1`

#擷取程序號

pid=`echo $text | cut -c 1-$pos`

#echo pid=---$pid+++

echo $

return 0

}# cat /proc/$/status | grep vmrss | awk ''

get_mem()

/status | grep vmrss`

#沒有這個程序

if [ "$" = "" ] ; then

memory=0

echo $

return 0

fipos=`expr index "$text" " "`

text=`echo $text | cut -c $pos-`

pos=`expr index "$text" " "`

pos=`expr $pos - 1`

memory=`echo $text | cut -c 1-$pos`

#echo memory=---$memory+++

echo $

return 0

}# 最好是引數傳遞

process_name="quantum6"

# 有人指點,也可以一條命令搞定:

# ps -a | grep $ | awk ''

pid=$(get_pid $)

#沒有這個程序

if [ "$" = "0" ] ; then

max_memory=0

else

max_memory=$(get_mem $)

fiecho pid=$, max_mem=$

# 迴圈。如果記憶體增加,輸出變化情況。

while [ true ] ; do

sleep 1s

# 得到程序號

pid=$(get_pid $process_name)

if [ "$" = "0" ] ; then

# 沒找到,復位

max_memory=0

continue

fi# 得到程序使用的記憶體。

# cat /proc/$/status | grep vmrss | awk ''

current_memory=$(get_mem $)

if [ "$" = "0" ] ; then

continue

fi# 如果占用記憶體增加了,輸出

if [ $ -gt $ ] ; then

echo

echo ---------------------------------

date

diff=`expr $ - $`

echo $ - $ = $

max_memory=$

fidone

輸出如下:

乙個簡單的記憶體檢查系統

在編寫嵌入式 的時候,由於在全入市,有時候比較的注意記憶體資源的使用。在inux環境下,我使用了下面的較為簡單的記憶體檢查系統。具體不多說了,思想比較的簡單,就是記錄下每次new分配資源的時候,記錄下相關的資訊,然後在呼叫delete釋放資源的時候,找到分配的時候對應的記錄,將其刪除。如果最後,每次...

Linux 檢視某乙個程序占用記憶體情況

pid 程序的id user 程序所有者 pr 程序的優先級別,越小越優先被執行 ninice 值 virt 程序占用的虛擬記憶體 res 程序占用的物理記憶體 shr 程序使用的共享記憶體 s 程序的狀態。s表示休眠,r表示正在執行,z表示僵死狀態,n表示該程序優先值為負數 cpu 程序占用cpu...

Linux如何建立乙個程序

每個程序都有以下屬性 棧 stack 以幀為單位,當程式呼叫函式 假如該函式名為fun01 時,stack會向下增長一幀,這個幀會儲存該函式的引數 區域性變數以及返回位址,計算機將控制權交給fun01,fun01處於啟用狀態,這時 global data 和 該幀中的區域性變數共同構成了contex...