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種狀態:
- 運行狀態 ( R),正在運行或在運行隊列中等待
- 睡眠狀態(S),休眠中,進程在等待事件的完成
- 不可中斷睡眠狀態(D) ,指的並不是CPU不影響外部硬件中斷,而是指進程不影響異步信號。進程通常會等 待IO的結束
- 殭屍狀態(Z),進程已經終止,但進程的描述符存在,直到父進程調用wait或waitpid系統調用後釋放
- 停止狀態(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