文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡書
1. ps命令介紹及Linux進(jìn)程狀態(tài)介紹
Linux中的ps
命令是Process Status的縮寫淆党,ps
命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程诡壁。ps
命令可以列出當(dāng)前進(jìn)程的運(yùn)行情況(狀態(tài)、時(shí)間等信息)血巍。在Linux系統(tǒng)中,進(jìn)程有5中狀態(tài),在ps
命令中分別用5個(gè)大寫字母表示:
- R (TASK_RUNNING),可執(zhí)行狀態(tài)茄唐。
runnable (on run queue),正在運(yùn)行或在運(yùn)行隊(duì)列中等待的進(jìn)程 - S (TASK_INTERRUPTIBLE)蝇更,可中斷的睡眠狀態(tài)沪编。
sleeping,處于這個(gè)狀態(tài)的進(jìn)程因?yàn)榈却衬呈录陌l(fā)生(比如等待socket連接年扩、等待信號(hào)量)蚁廓,而被掛起。 - D (TASK_UNINTERRUPTIBLE)厨幻,不可中斷的睡眠狀態(tài)相嵌。
uninterruptible sleep (usually IO)腿时,進(jìn)程處于睡眠狀態(tài),但是此刻進(jìn)程是不可中斷的饭宾。不可中斷批糟,指的并不是CPU不響應(yīng)外部硬件的中斷,而是指進(jìn)程不響應(yīng)異步信號(hào)看铆。 - T (TASK_STOPPED or TASK_TRACED)徽鼎,暫停狀態(tài)或跟蹤狀態(tài)。
traced or stopped弹惦,進(jìn)程處于睡眠狀態(tài)否淤,但是此刻進(jìn)程是不可中斷的。不可中斷棠隐,指的并不是CPU不響應(yīng)外部硬件的中斷石抡,而是指進(jìn)程不響應(yīng)異步信號(hào)。(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行)助泽。 - Z (TASK_DEAD - EXIT_ZOMBIE)啰扛,退出狀態(tài),進(jìn)程成為僵尸進(jìn)程嗡贺。
a defunct process隐解,在這個(gè)退出過程中,進(jìn)程占有的所有資源將被回收暑刃,除了task_struct結(jié)構(gòu)(以及少數(shù)資源)。
除此之外膜眠,還有ps
命令還有一些進(jìn)程狀態(tài)信息:
- < 優(yōu)先級(jí)高的進(jìn)程
- l 多線程狀態(tài)
- 前臺(tái)進(jìn)程
- L 鎖定狀態(tài)
- N 優(yōu)先級(jí)低的進(jìn)程
2. ps命令用法
默認(rèn)情況下岩臣,ps命令只會(huì)顯示運(yùn)行在當(dāng)前控制臺(tái)下的屬于當(dāng)前用戶的進(jìn)程。
$ ps
PID TTY TIME CMD
50498 ttys000 0:00.02 -bash
$ ps -f
UID PID PPID C STIME TTY TIME CMD
501 50498 50497 0 9:27下午 ttys000 0:00.08 -bash
$ ps -l
UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD
501 50498 50497 4006 0 31 0 2466156 1648 - S 0 ttys000 0:00.08 -bash
ps
命令的結(jié)果列信息表示如下:
- UID 啟動(dòng)進(jìn)程的用戶
- PID 進(jìn)程ID
- PPID 進(jìn)程的父進(jìn)程ID
- C 進(jìn)程生命周期中的CPU利用率
- TTY 運(yùn)行在哪個(gè)終端
- TIME 進(jìn)程已用CPU時(shí)間
- CMD 進(jìn)程的命令
- F 內(nèi)核分配給進(jìn)程的標(biāo)記
- PRI 進(jìn)程的優(yōu)先級(jí)
- NI 謙讓度值用來參與決定優(yōu)先級(jí)
- SZ 如果進(jìn)程被換出宵膨,所需要的空間大小
- WCHAN 進(jìn)程休眠的內(nèi)核函數(shù)的地址
- ADDR 進(jìn)程的內(nèi)存地址
- S 進(jìn)程的狀態(tài)架谎,(O表示正在運(yùn)行,S表示休眠辟躏,R表示運(yùn)行谷扣,Z代表僵化,T代表停止)
ps命令的常用參數(shù)有:
- -e捎琐,-A 顯示所有進(jìn)程
- -f 顯示完整格式的輸出
- -l 顯示長列表
- -a会涎,所有進(jìn)程,加上-x參數(shù)會(huì)顯示沒有控制終端的進(jìn)程
- -u username瑞凑,顯示指定用戶的進(jìn)程末秃,例如
ps -u ltc
- -aux 按照CPU或者內(nèi)存用量來篩選進(jìn)程,例如
ps -aux --sort -pcpu
或ps -aux --sort -pmem
- -C cmdlist籽御,顯示包含在cmdlist列表中的進(jìn)程练慕,例如
ps -C test
- -L 顯示進(jìn)程中的線程惰匙,例如
ps -L 123
,123為進(jìn)程ID - -j 顯示任務(wù)信息
- -H 用層級(jí)顯示進(jìn)程铃将,樹狀結(jié)構(gòu)
ps命令參數(shù)還有很多项鬼,根據(jù)需要自己查詢吧。