ps 概述
Linux中的ps命令是Process Status的縮寫。ps命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程。ps命令列出的是當(dāng)前那些進(jìn)程的快照,就是執(zhí)行ps命令的那個(gè)時(shí)刻的那些進(jìn)程,如果想要?jiǎng)討B(tài)的顯示進(jìn)程信息,就可以使用top命令。
linux上進(jìn)程有5種狀態(tài):
- 運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
- 中斷(休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號)
- 不可中斷(收到信號不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
- 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
- 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運(yùn)行運(yùn)行)
ps工具標(biāo)識進(jìn)程的5種狀態(tài)碼:
- R 運(yùn)行 runnable (on run queue)
- S 中斷 sleeping
- D 不可中斷 uninterruptible sleep (usually IO)
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
ps 使用
用法:ps [ 參數(shù) ]
參數(shù)說明:
-A 顯示所有進(jìn)程(等價(jià)于-e)(utility)
-a 顯示一個(gè)終端的所有進(jìn)程,除了會話引線
-N 忽略選擇。
-d 顯示所有進(jìn)程,但省略所有的會話引線(utility)
-x 顯示沒有控制終端的進(jìn)程,同時(shí)顯示各個(gè)命令的具體路徑。dx不可合用。(utility)
-p pid 進(jìn)程使用cpu的時(shí)間
-u uid or username 選擇有效的用戶id或者是用戶名
-
-g gid or groupname 顯示組的所有進(jìn)程。
U username 顯示該用戶下的所有進(jìn)程,且顯示各個(gè)命令的詳細(xì)路徑。如:ps U zhang;(utility)
-f 全部列出,通常和其他選項(xiàng)聯(lián)用。如:ps -fa or ps -fx and so on.
-l 長格式(有F,wchan,C 等字段)
-j 作業(yè)格式
-o 用戶自定義格式。
v 以虛擬存儲器格式顯示
s 以信號格式顯示
-m 顯示所有的線程
-H 顯示進(jìn)程的層次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后顯示環(huán)境(如:ps -d e; ps -a e)(utility)
h 不顯示第一行
示例一:ps -aux
最常用的方法是ps -aux,然后再利用一個(gè)管道符號導(dǎo)向到grep去查找特定的進(jìn)程,然后再對特定的進(jìn)程進(jìn)行操作。

列說明:
- USER: 用戶名
- PID: 進(jìn)程ID(Process ID)
- %CPU: 進(jìn)程的cpu占用率
- %MEM: 進(jìn)程的內(nèi)存占用率
- VSZ: 進(jìn)程所使用的虛存的大?。╒irtual Size)
- RSS: 進(jìn)程使用的駐留集大小或者是實(shí)際內(nèi)存的大小,Kbytes字節(jié)。
- TTY: 與進(jìn)程關(guān)聯(lián)的終端(tty)
- STAT: 進(jìn)程的狀態(tài):進(jìn)程狀態(tài)使用字符表示的(STAT的狀態(tài)碼)
- TIME: 進(jìn)程使用的總cpu時(shí)間
- COMMAND: 正在執(zhí)行的命令行命令
示例二: ps -ef

- UID: 用戶ID(User ID)
- PID: 進(jìn)程ID(Process ID)
- PPID: 父進(jìn)程的進(jìn)程ID(Parent Process id)
- STIME: 啟動時(shí)間
- TTY: 與進(jìn)程關(guān)聯(lián)的終端(tty)
- TIME: 進(jìn)程使用的總cpu時(shí)間
- CMD: 正在執(zhí)行的命令行命令
示例三: ps -l

- F: 代表這個(gè)程序的旗標(biāo) (flag), 4 代表使用者為 super user
- S: 睡眠 Sleeping 休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號。
- UID: 用戶ID(User ID)
- PID: 進(jìn)程ID(Process ID)
- PPID: 父進(jìn)程的進(jìn)程ID(Parent Process id)
- C: CPU 使用的資源百分比
- PRI: 這個(gè)是 Priority (優(yōu)先執(zhí)行序) 的縮寫,詳細(xì)后面介紹
- NI: 這個(gè)是 Nice 值,在下一小節(jié)我們會持續(xù)介紹
- ADDR: 這個(gè)是 kernel function,指出該程序在內(nèi)存的那個(gè)部分。如果是個(gè) running的程序,一般就是 "-"
- SZ: 使用掉的內(nèi)存大小
- WCHAN: 目前這個(gè)程序是否正在運(yùn)作當(dāng)中,若為 - 表示正在運(yùn)作
- TTY: 登入者的終端機(jī)位置
- TIME: 使用掉的 CPU 時(shí)間。
- CMD 所下達(dá)的指令為何
其它列詳細(xì)說明
- SID: 會話ID(Session id)
- R: 運(yùn)行 Runnable (on run queue) 正在運(yùn)行或在運(yùn)行隊(duì)列中等待。
- I: 空閑 Idle
- Z: 僵死 Zombie(a defunct process) 進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放。
- D: 不可中斷 Uninterruptible sleep (ususally IO) 收到信號不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生。
- T: 終止 Terminate 進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運(yùn)行運(yùn)行。
- P: 等待交換頁
- W :無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。
- X: 死掉的進(jìn)程
- <: 高優(yōu)先級進(jìn)程 高優(yōu)先序的進(jìn)程
- N: 低優(yōu)先 級進(jìn)程 低優(yōu)先序的進(jìn)程
- L: 內(nèi)存鎖頁 Lock 有記憶體分頁分配并縮在記憶體內(nèi)
- s: 進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);
- l: 多進(jìn)程的(使用 CLONE_THREAD, 類似 NPTL pthreads)
- +: 位于后臺的進(jìn)程組
- START: 進(jìn)程啟動時(shí)間和日期
- NI: 優(yōu)先級(Nice)
- PRI: 進(jìn)程優(yōu)先級編號(Priority)
- WCHAN: 進(jìn)程正在睡眠的內(nèi)核函數(shù)名稱;該函數(shù)的名稱是從/root/system.map文件中獲得的。
- FLAGS: 與進(jìn)程相關(guān)的數(shù)字標(biāo)識
示例4
查看進(jìn)程的啟動時(shí)間:
ps -eo lstart 啟動時(shí)間查看進(jìn)程的運(yùn)行時(shí)間
ps -eo etime 運(yùn)行多長時(shí)間.查看進(jìn)程的pid、啟動時(shí)間、運(yùn)行時(shí)間
ps -eo pid,lstart,etime | grep [ pid ]