Linux中的ps (Process Status)命令用來列出系統中當前運行的那些進程。
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行)
ps工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.命令說明
名稱:ps
使用權限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
2.常用命令參數
-a 顯示同一終端下的所有程序 -A 顯示所有進程 (等價於-e) -w 顯示加寬可以顯示較多的資訊 -au 顯示較詳細的資訊 -aux 顯示所有包含其他使用者的進程 c 顯示進程的真實名稱 -C<命令> 列出指定命令的狀況 顯示一個名為getty的進程的信息 ps -C getty -d 顯示所有進程,但省略所有的會話引線(utility) -e 等於“-A” e 顯示環境變量 -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on. f 顯示程序間的關系(樹形結構 pstree命令也是顯示樹形結構) x 顯示所有程序,不以終端機來區分。 -x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility) -N 反向選擇 -H 顯示樹狀結構 r 顯示當前終端的進程 T 顯示當前終端的所有程序 u 指定用戶的所有進程 -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。 -p pid 父進程id -u uid or username 選擇有效的用戶id或者是用戶名 -g gid or groupname 顯示組的所有進程。 -l 長格式(有F,wchan,C 等字段) -L 參數,后面加上特定的PID 顯示特定進程的線程 --lines<行數> 每頁顯示的行數 --width<字符數> 每頁顯示的字符數 --help 顯示幫助信息 --version 顯示版本顯示 --sort -pcpu 根據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 代表這個程序的旗標 (flag), 4 代表使用者為 super user S 代表這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹 UID 程序被該 UID 所擁有 PID 就是這個程序的 ID ! PPID 則是其上級父程序的ID C CPU 使用的資源百分比 PRI 這個是 Priority (優先執行序) 的縮寫,詳細后面介紹 NI 這個是 Nice 值,在下一小節我們會持續介紹 ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-" SZ 使用掉的內存大小 WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作 TTY 登入者的終端機位置 TIME 使用掉的 CPU 時間。 CMD 所下達的指令為何
4. 范例
1. 用 | 管道和 more 連接起來分頁查看 命令:ps -aux |more 2. 把所有進程顯示出來,並輸出到ps.txt文件 命令:ps -aux > ps.txt 3. 輸出指定的字段 命令: ps -o pid,ppid,pgrp,tpgid,comm 4. 結合watch命令 實時顯示系統的進程狀態 命令: watch -n 1 ‘ps -aux --sort -pmem, -pcpu | head 20’