linux下查看最消耗CPU、內存的進程


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);
+      //位於后台的進程組;

 

參考:

linux下查看最消耗CPU、內存的進程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM