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了,直接看第一个命令的结果就是