ps -eo pid pcpu pmem rss
pcpu是CPU利用率,pmem是內存利用率,這兩個都是用百分比表示
rss是實際駐留內存的大小,單位是K
==================================
ps -eo vsz,pcpu,stime,pid,args | egrep "$SWDIR/etc/sw*bgmbd" | sort -nr
==============================
使用prstat命令
使用prstat命令檢查和顯示關於系統中活動進程的信息。
這個命令也可以顯示指定進程的信息,UID,(CPU)IDs,或者處理器設置。默認的prstat命令顯示的所有信息是以CPU佔用率進行排序的。執行prstat命令:
# prstat
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU POCESS/NLWP
1641 root 4864K 4520K cpu0 59 0 0:00:00 0.5% prstat/1
1635 root 1504K 1168K sleep 59 0 0:00:00 0.3% ksh/1
9 root 6096K 4072K sleep 59 0 0:00:29 0.1% svc.configd/11
566 root 82M 30M sleep 29 10 0:00:36 0.1% java/14
1633 root 2232K 1520K sleep 59 0 0:00:00 0.1% in.rlogind/1
531 root 8200K 2928K sleep 59 0 0:00:12 0.1% dtgreet/1
474 root 21M 7168K sleep 59 0 0:00:11 0.1% Xsun/1
236 root 4768K 2184K sleep 59 0 0:00:03 0.0% inetd/4
86 root 3504K 1848K sleep 59 0 0:00:01 0.0% nscd/24
Total: 53 processes, 171 lwps, load averages: 0.02, 0.04, 0.07
退出prstat命令按q鍵。
Prstat報告的內容
PID 進程的PID號
USERNAME 登陸用戶名或者進程UID的所有者
SIZE 進程總體虛擬內存的大小
RSS 進程駐留大小設置Kbyte Mbyte Gbyte.
STATE cpu進程運行在那個CPU上。Sleep進程等待一個事件的完成。Run進程在運行隊列中zombie進程停止但是父進程並不等待stop進程停止。
PRI 進程的優先級
NICE 計算優先級的數值
TIME 進程累積運行時間
CPU 進程最近佔用CPU的百分比
PRCESS/NLWP 進程名/在進程中的輕量進程號
有的機器上用top
使用svmon命令,可與 -u、-p、-g 或 -v 標誌來更改排序規則。如果不瞭解就輸入 svmon -help 看看多有什麼規則。按你的題目來,比如說我獲得使用內存前10個進程,命令爲:svmon -Pt10 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'
補充,svmon命令是在AIX系統上的。ps命令比較通用,樓主既然接觸了Unix,肯定比較瞭解這個命令,我接觸的還是AIX居多,如果樓主沒裝,可以將svmon換做ps。
這個命令本身是按使用內存多少降序排列的。而且列出了具體的使用情況。你注意看裏面的參數,Inuse一欄顯示的是進程使用的段在實際內存中的總頁數,pin一欄顯示的是鎖定的總頁數,Pgsp一欄顯示的是調用空間總頁數,Virtual一欄顯示的進程在虛擬空間總頁數,注意,AIX中默認4k爲一頁。這個命令是非常詳細的列出了進程使用內存的情況。
正常來說,由於Unix和windows管理內存方式的不同,Unix經常有內存快被耗光的假象,你運行ps aux命令,注意rss欄,看是否存在內存泄露情況。
1:不是每個人每個電腦都裝着AIX,solaris就用pmap吧建議用vmstat或者直接用ps代替svmon,這樣更通用些命令的使用方法 -help自己學
2:不是每個人每個電腦都有perl 建議樓上把命令換成grep吧,如果不懂正則,也別grep了,直接看第一個命令的結果就是