2012-09-03 45 views
0

我想編寫一個腳本來監視某個進程的%cpu%mem,cpu時間等(越多越好)。像Windows上的性能監視器(perfmon)。
我知道有一些工具已經完成了,但我必須使用basic和build函數來完成它,因爲它必須在linux和(solaris */aix/hpux)上工作。
這將是巨大的,有從PERFMON.EXE類似於輸出,這樣我會有更新的輸出日誌可以說,每5秒跟蹤過程中的格式:我自己的unix性能監視器的進程

date %mem %cpu cputime private_bytes(?) virtual_bytes(?)   

我不知道是否提取數據從頂部(實際上在所有os上將會使用它不一樣)或嘗試從'ps'查詢中提取它。

我嘗試一些像環這樣做:

for $count; do 
    sleep $delay 
    date >>output.txt 
    ps -A -o pid,%cpu,%mem,time -o comm= | grep -v grep | grep $process >> output.txt 
done 

我將不勝感激任何提示。

BR

+0

在Linux上,您將使用'/ proc /'閱讀它的文檔。 –

+0

'/ proc'會非常不便攜式 –

回答

0

如果不同的Unix系統之間的可移植性是我們的目標,你的做法似乎OK(grep -v沒有雖然需要),但要小心使用普通ps開關

+0

即,你可以做一些像'p = $ {process#?}; grep「[$ {process%$ p}] $ p」' – tripleee

+0

因爲他想監視一個特定的進程,所以根本就不需要grep。使用'-C'或'-p'使'ps'顯示特定命令或PID的數據。 –

2

試着這麼做

ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -C NAME 

ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -p PID 

如果您只是對特定流程感興趣,請勿使用-A