Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?讨论这个问题,要追溯到Unix系统中的两种风格
System V风格 BSD 风格
ps -ef ps aux
1.CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
2.内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
3.虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
ps auxw
u:以用户为主的格式来显示程序状况
x:显示所有程序,不以终端机来区分
w:采用宽阔的格式来显示程序状况
ps auxw|head -1
输出表头
sort -rn -k5
-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位
USER //用户名 %CPU //进程占用的CPU百分比 %MEM //占用内存的百分比 VSZ //该进程使用的虚拟內存量(KB) RSS //该进程占用的固定內存量(KB)resident set size STAT //进程的状态 START //该进程被触发启动时间 TIME //该进程实际使用CPU运行的时间
tty (Teletype terminal )与进程关联的终端
串行端口终端(/dev/ttySn) 伪终端(/dev/pty/) 控制终端(/dev/tty) 控制台终端(/dev/ttyn, /dev/console) 虚拟终端(/dev/pts/n)
去掉x参数的结果
ps auw | head -1; ps auw|sort -rn -k4 | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND xiaofu 25732 0.0 0.1 199360 29024 pts/0 Sl+ 09:53 0:00 mongo 192.168.1.251:29017 xiaoxie 853 0.0 0.0 105464 992 pts/1 T 11:38 0:00 /usr/bin/less -is xiaoxie 849 0.0 0.0 106080 684 pts/1 T 11:38 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\""; echo ".pl (nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is) xiaoxie 848 0.0 0.0 106080 1292 pts/1 T 11:38 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\""; echo ".pl (nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is) xiaoxie 845 0.0 0.0 101144 1036 pts/1 T 11:38 0:00 man ps xiaoxie 28600 0.0 0.0 105464 988 pts/1 T 10:56 0:00 /usr/bin/less -is xiaoxie 28596 0.0 0.0 106080 688 pts/1 T 10:56 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\""; echo ".pl (nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is) xiaoxie 28595 0.0 0.0 106080 1296 pts/1 T 10:56 0:00 sh -c (cd "/usr/share/man" && (echo ".ll 14.8i"; echo ".nr LL 14.8i"; echo ".pl 1100i"; /usr/bin/gunzip -c '/usr/share/man/man1/ps.1.gz'; echo ".\""; echo ".pl (nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -is) xiaoxie 28592 0.0 0.0 101144 1032 pts/1 T 10:56 0:00 man ps xiaoxie 28202 0.0 0.0 108320 1988 pts/1 Ss 10:41 0:00 -bash
stat取值含义
D //无法中断的休眠状态(通常 IO 的进程); R //正在运行可中在队列中可过行的; S //处于休眠状态; T //停止或被追踪; W //进入内存交换 (从内核2.6开始无效); X //死掉的进程 (基本很少见); Z //僵尸进程; < //优先级高的进程 N //优先级较低的进程 L //有些页被锁进内存; s //进程的领导者(在它之下有子进程); l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); + //位于后台的进程组;
参考: