2017-10-11 75 views
1

我有一系列在嵌入式系統上運行的bash腳本。 bash腳本包含其他內容,當他們這樣做時,它們的內存使用情況似乎就會上升。因此,例如,我有:如何在bash中跟蹤內存使用情況

showmem() { 
     echo "[$1] $(ps up $$ | tail -1 | awk '{print $6}')" 
} 

showmem "about to include" 
. foo.sh 
showmem "done include" 

我也得到輸出

[about to include] 3356 
[done include] 5244 

請注意,該值是KB。所以,我需要找出其中的內存是怎麼回事。起初我以爲這是包含文件的實際大小(該文件包含其他文件等),但現在我已經將所有文件大小相加,並且它們不重要。此外,env的輸出大小也不會增加太多,所以它不是一個臃腫的環境,並且流程樹不顯示任何子流程。

是否有任何工具可以告訴我內存被用於什麼?有沒有辦法在bash腳本中的任何時候「刷新」未使用的內存?

(注意:這是很重要的,因爲這個特定的bash腳本等待一個事件,並且在任何給定的時間有幾個它運行的實例)。

回答

0

也許這是不可能的。 bash本身是非常複雜的,它的內存使用可能不會簡單地被它正在運行的腳本所緩衝。