[Linux] ps命令詳解
Linux中的ps (Process Status)命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程。
linux上進(jìn)程有5種狀態(tài):
1. 運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
停止進(jìn)程的運(yùn)行, 但該信號可以被處理和忽略. 用戶鍵入susp字符時(通常是ctrl-z)發(fā)出這個信號。默認(rèn)會導(dǎo)致進(jìn)程停止的信號有:sigstop,sigtstp,sigttin,sigttou。發(fā)送sigstop (17,19,23)停止一個進(jìn)程,而并不消滅這個進(jìn)程。
ps工具標(biāo)識進(jìn)程的5種狀態(tài)碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運(yùn)行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.命令說明
名稱:ps
使用權(quán)限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態(tài)
2.常用命令參數(shù)
-a 顯示同一終端下的所有程序 -A 顯示所有進(jìn)程 (等價(jià)于-e) -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細(xì)的資訊 -aux 顯示所有包含其他使用者的進(jìn)程 c 顯示進(jìn)程的真實(shí)名稱 -C<命令> 列出指定命令的狀況 顯示一個名為getty的進(jìn)程的信息 ps -C getty -d 顯示所有進(jìn)程,但省略所有的會話引線(utility) -e 等于“-A” e 顯示環(huán)境變量 -f 全部列出,通常和其他選項(xiàng)聯(lián)用。如:ps -fa or ps -fx and so on. f 顯示程序間的關(guān)系(樹形結(jié)構(gòu) pstree命令也是顯示樹形結(jié)構(gòu)) x 顯示所有程序,不以終端機(jī)來區(qū)分。 -x 顯示沒有控制終端的進(jìn)程,同時顯示各個命令的具體路徑。dx不可合用。(utility) -N 反向選擇 -H 顯示樹狀結(jié)構(gòu) r 顯示當(dāng)前終端的進(jìn)程 T 顯示當(dāng)前終端的所有程序 u 指定用戶的所有進(jìn)程 -t<終端機(jī)編號> 指定終端機(jī)編號,并列出屬于該終端機(jī)的程序的狀況。 -p pid 父進(jìn)程id -u uid or username 選擇有效的用戶id或者是用戶名 -g gid or groupname 顯示組的所有進(jìn)程。 -l 長格式(有F,wchan,C 等字段) -L 參數(shù),后面加上特定的PID 顯示特定進(jìn)程的線程 --lines<行數(shù)> 每頁顯示的行數(shù) --width<字符數(shù)> 每頁顯示的字符數(shù) --help 顯示幫助信息 --version 顯示版本顯示 --sort -pcpu 根據(jù)pcpu排序
3.ps 顯示列的意義
[root@localhost cc]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 17398 17394 0 75 0 - 16543 wait pts/0 00:00:00 bash 4 R 0 17469 17398 0 77 0 - 15877 - pts/0 00:00:00 ps F 代表這個程序的旗標(biāo) (flag), 4 代表使用者為 super user S 代表這個程序的狀態(tài) (STAT),關(guān)于各 STAT 的意義將在內(nèi)文介紹 UID 程序被該 UID 所擁有 PID 就是這個程序的 ID ! PPID 則是其上級父程序的ID C CPU 使用的資源百分比 PRI 這個是 Priority (優(yōu)先執(zhí)行序) 的縮寫,詳細(xì)后面介紹 NI 這個是 Nice 值,在下一小節(jié)我們會持續(xù)介紹 ADDR 這個是 kernel function,指出該程序在內(nèi)存的那個部分。如果是個 running的程序,一般就是 "-" SZ 使用掉的內(nèi)存大小 WCHAN 目前這個程序是否正在運(yùn)作當(dāng)中,若為 - 表示正在運(yùn)作 TTY 登入者的終端機(jī)位置 TIME 使用掉的 CPU 時間。 CMD 所下達(dá)的指令為何
4. 范例