我想你需要了解一下ps命令

ps概述

Linux中的ps命令是Process Status的縮寫。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等等,ps 爲我們提供了進程的一次性的查看,它所提供的查看結果並不動態連續的;如果想對進程時間監控,應該用 top 命令。

參數

-a  顯示所有終端機下執行的進程,除了階段作業領導者之外。
 a  顯示現行終端機下的所有進程,包括其他用戶的進程。
-A  顯示所有進程。
-c  顯示CLS和PRI欄位。
 c  列出進程時,顯示每個進程真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
-C<指令名稱>  指定執行指令的名稱,並列出該指令的進程的狀況。
-d  顯示所有進程,但不包括階段作業領導者的進程。
-e  此參數的效果和指定"A"參數相同。
 e  列出進程時,顯示每個進程所使用的環境變量。
-f  顯示UID,PPIP,C與STIME欄位。
 f  用ASCII字符顯示樹狀結構,表達進程間的相互關係。
-g<羣組名稱>  此參數的效果和指定"-G"參數相同,當亦能使用階段作業領導者的名稱來指定。
 g  顯示現行終端機下的所有進程,包括羣組領導者的進程。
-G<羣組識別碼>  列出屬於該羣組的進程的狀況,也可使用羣組名稱來指定。
 h  不顯示標題列。
-H  顯示樹狀結構,表示進程間的相互關係。
-j或j  採用工作控制的格式顯示進程狀況。
-l或l  採用詳細的格式來顯示進程狀況。
 L  列出欄位的相關信息。
-m或m  顯示所有的執行緒。
 n  以數字來表示USER和WCHAN欄位。
-N  顯示所有的進程,除了執行ps指令終端機下的進程之外。
-p<進程識別碼>  指定進程識別碼,並列出該進程的狀況。
 p<進程識別碼>  此參數的效果和指定"-p"參數相同,只在列表格式方面稍有差異。
 r  只列出現行終端機正在執行中的進程。
-s<階段作業>  指定階段作業的進程識別碼,並列出隸屬該階段作業的進程的狀況。
 s  採用進程信號的格式顯示進程狀況。
 S  列出進程時,包括已中斷的子進程資料。
-t<終端機編號>  指定終端機編號,並列出屬於該終端機的進程的狀況。
 t<終端機編號>  此參數的效果和指定"-t"參數相同,只在列表格式方面稍有差異。
-T  顯示現行終端機下的所有進程。
-u<用戶識別碼>  此參數的效果和指定"-U"參數相同。
 u  以用戶爲主的格式來顯示進程狀況。
-U<用戶識別碼>  列出屬於該用戶的進程的狀況,也可使用用戶名稱來指定。
 U<用戶名稱>  列出屬於該用戶的進程的狀況。
 v  採用虛擬內存的格式顯示進程狀況。
-V或V  顯示版本信息。
-w或w  採用寬闊的格式來顯示進程狀況。 
 x  顯示所有進程,不以終端機來區分。
 X  採用舊式的Linux i386登陸格式顯示進程狀況。
-y 配合參數"-l"使用時,不顯示F(flag)欄位,並以RSS欄位取代ADDR欄位。

無參數情況下

首先看不加參數執行ps命令會輸出什麼?
在這裏插入圖片描述
結果默認會顯示4列信息:

PID: 運行着的命令(CMD)的進程編號

TTY: 命令所運行的位置(終端)

TIME: 運行着的該命令所佔用的CPU處理時間

CMD: 該進程所運行的命令

直接執行不加任何選項的 ps 命令時,則只顯示當前用戶會話中打開的進程信息,這些信息在顯示時未排序。

顯示所有當前進程

可以使用 -a 參數,-a 代表all。同時加上x參數會顯示沒有控制終端的進程

ps -ax

結果中多出一列是STAT,STAT表示進程的當前狀態,在Linux下進程有5種狀態:

  1. 運行狀態 ( R),正在運行或在運行隊列中等待
  2. 睡眠狀態(S),休眠中,進程在等待事件的完成
  3. 不可中斷睡眠狀態(D) ,指的並不是CPU不影響外部硬件中斷,而是指進程不影響異步信號。進程通常會等 待IO的結束
  4. 殭屍狀態(Z),進程已經終止,但進程的描述符存在,直到父進程調用wait或waitpid系統調用後釋放
  5. 停止狀態(T),進程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信號停止運行

其他狀態還包括W(無駐留頁),<(高優先級進程),N(低優先級進程),L(內存鎖頁)

在這裏插入圖片描述

根據進程的用戶進行信息過濾

如果要查看特定用戶進程的情況,我們可以使用 -u 參數。比如我們要查看用戶’hxl’的進程,可以通過下面的命令:

ps -u hxl

在這裏插入圖片描述

通過cpu和內存使用來過濾進程

如果要按照 CPU 或者內存用量來篩選,我們可以使用 aux 參數,來顯示全面的信息。

ps -aux

字段描述:

  USER:啓動該進程的用戶帳號名稱

   %CPU:表示進程的 CPU 佔用率

   %MEM:表示進程的內存佔用率

   VSZ:表示進程虛擬內存的大小,以 KB 爲單位

在這裏插入圖片描述
默認的結果集是未排好序的。可以通過 --sort命令來排序。下面是根據CPU使用率來升序排序

ps -aux --sort -pcpu


下面是根據內存使用率來升序排序

ps -aux --sort -pmem

通過進程名進行過濾

比如要找tomcat的進程的信息,可以使用下面的命令:

ps -ef |grep tomcat --color   //查找到tomcat進程,並用顏色標識

在這裏插入圖片描述
找到之後我們可以使用kill -9 pid強制把他殺死。

樹形的顯示進程

有時候我們希望以樹形結構顯示進程,可以使用 -axjf 參數。或者可以使用另一個命令,pstree

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章