歡迎您光臨本站 註冊首頁

linux進程狀態查詢——ps

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
系統維護的時候難免會遇到進程的狀態的查詢和管理,到底什麼是R,有的是S,有的還是S 呢?一直有些混沌的問題,今天細細的來總結一下:
ps是用來報告系統中程序執行狀況的命令這個是無可厚非的,linux進程的狀態:
D 不可中斷睡眠 (通常是在IO操作) 收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生
R 正在運行或可運行(在運行隊列排隊中)
S 可中斷睡眠 (休眠中, 受阻, 在等待某個條件的形成或接受到信號)
T 已停止的 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行
W 正在換頁(2.6.內核之前有效)
X 死進程 (未開啟)
Z 殭屍進程 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放BSD風格的
< 高優先順序(not nice to other users)
N 低優先順序(nice to other users)
L 頁面鎖定在內存(實時和定製的IO)
s 一個信息頭
l 多線程(使用 CLONE_THREAD,像NPTL的pthreads的那樣)
在前台進程組
例如:
[test@pan ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1672 516 ? S Apr21 0:00 init [5]
root 2 0.0 0.0 0 0 ? S Apr21 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN Apr21 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Apr21 0:00 [migration/1]
root 5 0.0 0.0 0 0 ? SN Apr21 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? S Apr21 0:00 [migration/2]
其中這個參數來列出所有的信息以提供自己檢查程序的問題!在上面的程序列出當中,說明如下:


USER:說明該程序是屬於哪一個人的;
PID:該程序的代號;
%CPU:代表該程序使用了多少 CPU 資源;
%MEM:代表該程序使用了多少的 RAM ;
VSZ, RSS:佔去的 ram 的大小( bytes );
TTY:是否為登入者執行的程序?若為 tty1-tty6 則為本機登入者,若為 pts/?? 則為遠程登入者執行的程序
STAT:該程序的狀態
START:該程序開始的日期;
TIME:該程序運行的時間?
COMMAND:該程序的內容啦!

ps命令一般和grep搭配使用,列出某個特定進程的狀態
ps -aux |grep Mega或者ps -ef |grep Mega (檢查進程名包含Mega的進程運行狀況)

man ps的解釋:
linux ps(process status) 命令詳解
  功能說明:報告程序狀況.
  語  法:ps [-aAcdefHjlmNVwy][acefghLnrsSTuvxX][-C <指令名稱>][-g <群組名稱>][-G <群組識別碼>][-p <程序識別碼>][p <程序識別碼>][-s <階段作業>][-t <終端機編號>][t <終端機編號>][-u <用戶識別碼>][-U <用戶識別碼>][U <用戶名稱>][-<程序識別碼>][--cols <每列字元數>][-- columns <每列字元數>][--cumulative][-- elect][--forest][--headers][--help] [--info][--lines <顯示列數>][--no-headers][--group <群組名稱>][-Group <群組識別碼>][--pid <程序識別碼>][--rows <顯示列數>][--sid <階段作業>][--tty <終端機編號>][--user <用戶名稱>][--User <用戶識別碼>][--version][--width <每列字元數>]

 補充說明:ps是用來報告程序執行狀況的指令,您可以搭配kill指令隨時中斷,刪除不必要的程序.
  參  數:
 -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欄位 .
  -<程序識別碼>  此參數的效果和指定"p"參數相同.
  --cols<每列字元數>  設置每列的最大字元數.
   --columns<每列字元數>  此參數的效果和指定"--cols"參數相同.
  --cumulative  此參數的效果和指定"S"參數相同.
  --deselect  此參數的效果和指定"-N"參數相同.
  --forest  此參數的效果和指定"f"參數相同.
  --headers  重複顯示標題列.
  --help  在線幫助.
   --info  顯示排錯信息.
  --lines<顯示列數>  設置顯示畫面的列數.
  --no-headers  此參數的效果和指定"h"參數相同,只在列表格式方面稍有差異.
  --group<群組名稱>  此參數的效果和指定"-G"參數相同.
  --Group<群組識別碼>  此參數的效果和指定"-G"參數相同.


   --pid<程序識別碼>  此參數的效果和指定"-p"參數相同.
  --rows<顯示列數>  此參數的效果和指定"--lines"參數相同.
  --sid<階段作業>  此參數的效果和指定"-s"參數相同.
  --tty<終端機編號>  此參數的效果和指定"-t"參數相同.
  --user<用戶名稱>  此參數的效果和指定"-U"參數相同.
  --User<用戶識別碼>  此參數的效果和指定"-U"參數相同.
   --version  此參數的效果和指定"-V"參數相同.
  --widty<每列字元數>  此參數的效果和指定"-cols"參數相同.


[火星人 ] linux進程狀態查詢——ps已經有256次圍觀

http://coctec.com/docs/linux/show-post-50932.html