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 \n(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 \n(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 \n(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 \n(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); + //位於后台的進程組;
參考: