2012年1月19日 星期四

在 Linux 中取得某程式所使用的記憶體大小


例如想知道 Tomcat 到底用了多少記憶體,則用
pmap $(ps -eo pid,comm,command | grep tomcat | awk '$2=="java" {print $1}') | grep total

下面是語法的說明



基本是
pmap pid | grep total

$(...)是取某程式 pid 的方法

| grep 是用來過濾
| grep total 的意思就是必須該行中有 total 文字的才顯示

$() 是用來執行一個命令

ps -eo pid,comm,command
-e all processes
-o user-defined output format
可使用 ps 的各欄名
所以上例就是只會顯示 pid,comm,command 這三欄
comm:執行程式的檔名
command:含路徑及參數

| grep tomcat 即是只顯示該行有 tomcat 的資料

| awk 是用來取各欄資料,再依需要做動作
預設是可空格來劃分各欄的資料,剛好符合 ps 的輸出格式
所以若用
| awk '{print $1}'
就會只顯示第一欄,也就是 pid
但 command 中有含 tomcat 時,並不一定是我們要的資料
有可能是另外的程式開啟了路徑中有含 tomcat 文字的檔案
所以
| awk '/java/ {print $1}'
是只有該行也存在 java 才顯示第一欄
但這同樣有點不保險
可改用
| awk '$2=="java" {print $1}'
表示只有第二欄資料,也就是執行程式為 java 時才顯示第一欄

沒有留言:

張貼留言

廣告訊息會被我刪除