進程的狀態
linux上進程有5種狀態:
- 運行(正在運行或在運行隊列中等待)
- 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
- 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
- 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
- 停止(進程收到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
進程的IDC
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);
+
位於後臺的進程組;