ps指令詳解

進程的狀態

linux上進程有5種狀態:

  1. 運行(正在運行或在運行隊列中等待)
  2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
  3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
  4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
  5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)

命令的參數

  • ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
  • ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
  • ps e 列出程序時,顯示每個程序所使用的環境變量。
  • ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係。
  • ps s 採用程序信號的格式顯示程序狀況。
  • ps S 列出程序時,包括已中斷的子程序資料。
  • ps u   以用戶爲主的格式來顯示程序狀況。
  • ps x   顯示所有程序,不以終端機來區分。
  • ps -l 較長,較詳細的顯示該PID的信息
  • ps -A 顯示所有程序。
  • ps -e 此參數的效果和指定”A”參數相同。
  • ps -H 顯示樹狀結構,表示程序間的相互關係。
  • ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
  • ps -t <終端機編號>  指定終端機編號,並列出屬於該終端機的程序的狀況。

顯示的含義

# ps -lA |more

F S   UID   PID  PPID  C PRI  NI ADDR SZ   WCHAN     TTY            TIME          CMD
4 S     0     1     0        0  76   0     -  1193 109952       ?             00:00:03 init
1 S     0     2     1        0 -40   -      -     0    migrat        ?             00:00:03 migration/0
1 S     0     3     1        0  94  19    -     0     ksofti         ?             00:00:00 ksoftirqd/0
1 S     0     4     1        0 -40   -      -     0    migrat        ?             00:00:02 migration/1
1 S     0     5     1        0  94  19    -     0    ksofti          ?             00:00:00 ksoftirqd/1
1 S     0     6     1        0 -40   -      -     0    migrat        ?             00:00:02 migration/2
1 S     0     7     1        0  94  19    -     0    ksofti          ?             00:00:00 ksoftirqd/2

相關信息的含義:

  • F 進程的標誌(flag),4表示用戶爲超級用戶
  • S 進程的狀態(stat),各STAT的意見見下文
  • PID 進程的ID
  • C CPU使用資源的百分比
  • PRI priority(優先級)的縮寫,
  • NI Nice值,
  • ADDR 核心功能,指出該進程在內存的那一部分,如果是運行的進程,一般都是“-”
  • SZ 用掉的內存的大小
  • WCHAN 當前進程是否正在進行,若爲“-”表示正在進行
  • TTY 登陸者的終端位置
  • TIME 用掉的CPU的時間
  • CMD 所執行的指令
# ps aux |more
USER       PID %CPU %MEM   VSZ  RSS  TTY                   STAT     START   TIME     COMMAND
root         1        0.0  0.0       4772  564 ?                         S        Sep22   0:03     init [3]
root         2        0.0  0.0        0    0        ?                         S        Sep22   0:03     [migration/0]
root         3        0.0  0.0        0    0        ?                         SN      Sep22   0:00     [ksoftirqd/0]
root         4        0.0  0.0        0    0        ?                         S        Sep22   0:02     [migration/1]
root         5        0.0  0.0        0    0        ?                         SN      Sep22   0:00     [ksoftirqd/1]
root         6        0.0  0.0        0    0        ?                         Ss+     Sep22   0:02     [migration/2]
root         7        0.0  0.0        0    0        ?                         SN      Sep22   0:00     [ksoftirqd/2]
root         8        0.0  0.0        0    0        ?                         S        Sep22   0:00     [migration/3]
root         9        0.0  0.0        0    0        ?                         SN      Sep22   0:00     [ksoftirqd/3]
root        10       0.0  0.0        0    0        ?                         S<      Sep22    0:00     [migration/4]

上述顯示的解釋

  • USER 進程的屬主;
  • PID 進程的ID;
  • PPID 父進程;
  • %CPU 進程佔用的CPU百分比;
  • %MEM 佔用內存的百分比;
  • NI 進程的NICE值,數值大,表示較少佔用CPU時間;
  • VSZ 該進程使用的虛擬內存量(KB);
  • RSS 該進程佔用的固定內存量(KB)(駐留中頁的數量);
  • TTY 該進程在那個終端上運行(登錄者的終端位置),若與終端無關,則顯示(?)。若爲pts/0等,則表示由網絡連接主機進程
  • WCHAN 當前進程是否正在進行,若爲“-”表示正在進行;
  • START 該進程程被出發啓動時間;
  • TIME 該進程實際使用CPU運行的時間;
  • COMMAND 命令的名稱和參數;

STAT狀態位常見的狀態字符

D 無法中斷的休眠狀態(通常 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入內存交換 (從內核2.6開始無效);
X 死掉的進程 (基本很少見);
Z 殭屍進程;
< 優先級高的進程
N 優先級較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位於後臺的進程組;

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