Linux下查看哪些進程占用的CPU、內存資源


 ps –ef|grep tomcat 查看所有有關tomcat的進程

kill -9 19979 終止線程號位19979的進程
pkill -9 java 批量終止java進程
 查看進程占用:lsof -i:9999
 根據進程ID查看進程詳細信息:ps axu|grep pid

查看端口8080的使用情況:netstat -tln | grep 8080

查到進程ID之后,使用netstat命令查看其占用的端口:netstat -aux | grep 進程ID


————————————————

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

4.也可以試試

ps auxw --sort=rss
ps auxw --sort=%cpu

5.看看幾個參數含義

%MEM 進程的內存占用率
MAJFL is the major page fault count, 
VSZ 進程所使用的虛存的大小
RSS 進程使用的駐留集大小或者是實際內存的大小(RSS is the "resident set size" meaning physical memory used)
TTY 與進程關聯的終端(tty)

    串行端口終端(/dev/ttySn)
    偽終端(/dev/pty/) 
    控制終端(/dev/tty) 
    控制台終端(/dev/ttyn,   /dev/console) 
    虛擬終端(/dev/pts/n) 


STAT 檢查的狀態:進程狀態使用字符表示的,如R(running正在運行或准備運行)、S(sleeping睡眠)、I(idle空閑)、Z (僵死)、D(不可中斷的睡眠,通常是I/O)、P(等待交換頁)、W(換出,表示當前頁面不在內存)、N(低優先級任務)T(terminate終止)、W has no resident pages

 

    D    不可中斷     Uninterruptible sleep (usually IO) 
    R    正在運行,或在隊列中的進程 
    S    處於休眠狀態 
    T    停止或被追蹤 
    Z    僵屍進程 
    W    進入內存交換(從內核2.6開始無效) 
    X    死掉的進程 

    <    高優先級 
    N    低優先級 
    L    有些頁被鎖進內存 
    s    包含子進程 
    +    位於后台的進程組; 
    l    多線程,克隆線程  multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 

 

linux部署業務的時候有時候會出現CPU或者內存很高的現象,需要查看哪些進程占用的高,參數以下命令:

linux下獲取占用CPU資源最多的10個進程,可以使用如下命令組合:

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

linux下獲取占用內存資源最多的10個進程,可以使用如下命令組合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head

命令組合解析(針對CPU的,MEN也同樣道理):
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

該命令組合實際上是下面兩句命令:
ps aux|head -1
ps aux|grep -v PID|sort -rn -k +3|head

查看占用cpu最高的進程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

或者top (然后按下M,注意這里是大寫)

 

查看占用內存最高的進程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
或者top (然后按下P,注意這里是大寫)
該命令組合實際上是下面兩句命令:
ps aux|head -1
ps aux|grep -v PID|sort -rn -k +3|head

其中第一句主要是為了獲取標題(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。
接下來的grep -v PID是將ps aux命令得到的標題去掉,即grep不包含PID這三個字母組合的行,再將其中結果使用sort排序。
sort -rn -k +3該命令中的-rn的r表示是結果倒序排列,n為以數值大小排序,而-k +3則是針對第3列的內容進行排序,再使用head命令獲取默認前10行數據。(其中的|表示管道操作)

補充:內容解釋
PID:進程的ID
USER:進程所有者
PR:進程的優先級別,越小越優先被執行
NInice:值
VIRT:進程占用的虛擬內存
RES:進程占用的物理內存
SHR:進程使用的共享內存
S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數
%CPU:進程占用CPU的使用率
%MEM:進程使用的物理內存和總內存的百分比
TIME+:該進程啟動后占用的總的CPU時間,即占用CPU使用時間的累加值。
COMMAND:進程啟動命令名稱

可以使用以下命令查使用內存最多的K個進程

方法1:
ps -aux | sort -k4nr | head -K
如果是10個進程,K=10,如果是最高的三個,K=3
說明:ps -aux中(a指代all——所有的進程,u指代userid——執行該進程的用戶id,x指代顯示所有程序,不以終端機來區分)

ps -aux的輸出格式如下:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]

sort -k4nr中(k代表從第幾個位置開始,后面的數字4即是其開始位置,結束位置如果沒有,則默認到最后;n指代numberic sort,根據其數值排序;r指代reverse,這里是指反向比較結果,輸出時默認從小到大,反向后從大到小。)。本例中,可以看到%MEM在第4個位置,根據%MEM的數值進行由大到小的排序。
head -K(K指代行數,即輸出前幾位的結果)
|為管道符號,將查詢出的結果導到下面的命令中進行下一步的操作。

方法2:top (然后按下M,注意大寫)

二、可以使用下面命令查使用CPU最多的K個進程
方法1:
ps -aux | sort -k3nr | head -K

方法2:top (然后按下P,注意大寫) 


免責聲明!

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



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