Linux中的ps命令是Process Status的縮寫,顧名思義,就是查看進(jìn)程狀態(tài)。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命令。
為丁青等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及丁青網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、丁青網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
要對進(jìn)程進(jìn)行監(jiān)測和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而 ps 命令就是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令。使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等等。總之大部分信息都是可以通過執(zhí)行該命令得到的。
ps 為我們提供了進(jìn)程的一次性的查看,它所提供的查看結(jié)果并不動(dòng)態(tài)連續(xù)的;如果想對進(jìn)程時(shí)間監(jiān)控,應(yīng)該用 top 工具。
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 [參數(shù)]
2.命令功能:
用來顯示當(dāng)前進(jìn)程的狀態(tài)。
3.命令參數(shù):
a 顯示所有進(jìn)程
-a 顯示同一終端下的所有程序
-A 顯示所有進(jìn)程
c 顯示進(jìn)程的真實(shí)名稱
-N 反向選擇
-e 等于“-A”
e 顯示環(huán)境變量
f 顯示程序間的關(guān)系
-H 顯示樹狀結(jié)構(gòu)
r 顯示當(dāng)前終端的進(jìn)程
T 顯示當(dāng)前終端的所有程序
u 指定用戶的所有進(jìn)程
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
-C命令 列出指定命令的狀況
--lines行數(shù) 每頁顯示的行數(shù)
--width字符數(shù) 每頁顯示的字符數(shù)
--help 顯示幫助信息
--version 顯示版本顯示
Linux下顯示系統(tǒng)進(jìn)程的命令ps,最常用的有ps -ef 和ps aux。這兩個(gè)到底有什么區(qū)別呢?兩者沒太大差別,討論這個(gè)問題,要追溯到Unix系統(tǒng)中的兩種風(fēng)格,System V風(fēng)格和BSD 風(fēng)格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同?,F(xiàn)在的大部分Linux系統(tǒng)都是可以同時(shí)使用這兩種方式的。
ps -ef 是用標(biāo)準(zhǔn)的格式顯示進(jìn)程的、其格式如下:?
其中各列的內(nèi)容意思如下?
UID //用戶ID、但輸出的是用戶名?
PID //進(jìn)程的ID?
PPID //父進(jìn)程ID?
C //進(jìn)程占用CPU的百分比?
STIME //進(jìn)程啟動(dòng)到現(xiàn)在的時(shí)間?
TTY //該進(jìn)程在那個(gè)終端上運(yùn)行,若與終端無關(guān),則顯示? 若為pts/0等,則表示由網(wǎng)絡(luò)連接主機(jī)進(jìn)程。?
CMD //命令的名稱和參數(shù)
ps aux 是用BSD的格式來顯示、其格式如下:?
同ps -ef 不同的有列有?
USER //用戶名?
%CPU //進(jìn)程占用的CPU百分比?
%MEM //占用內(nèi)存的百分比?
VSZ //該進(jìn)程使用的虛擬內(nèi)存量(KB)?
RSS //該進(jìn)程占用的固定內(nèi)存量(KB)(駐留中頁的數(shù)量)?
STAT //進(jìn)程的狀態(tài)?
START //該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間?
TIME //該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間
其中STAT狀態(tài)位常見的狀態(tài)字符有?
D //無法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程);?uninterruptible sleep (usually IO)不可中斷?
R //正在運(yùn)行可中在隊(duì)列中可過行的;?
S //處于休眠狀態(tài);?
T //停止或被追蹤;?traced or stopped?
W //進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開始無效);?
X //死掉的進(jìn)程 (基本很少見);?
Z //僵尸進(jìn)程;??a defunct (”zombie”) process
//優(yōu)先級高的進(jìn)程?
N //優(yōu)先級較低的進(jìn)程?
L //有些頁被鎖進(jìn)內(nèi)存;?
s //進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);?
l //多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads);?
+ //位于后臺的進(jìn)程組;
ps [options] [—help]
ps [-aAcdefHjlmNVwy][acefghLnrsSTuvxX][-C 指令名稱][-g 群組名稱]
[-G 群組識別碼][-p 進(jìn)程識別碼][p 進(jìn)程識別碼][-s 階段作業(yè)]
[-t 終端機(jī)編號][t 終端機(jī)編號][-u 用戶識別碼][-U 用戶識別碼]
[U 用戶名稱][-進(jìn)程識別碼][--cols 每列字符數(shù)]
[--columns 每列字符數(shù)][--cumulative][--deselect][--forest]
[--headers][--help][-- info][--lines 顯示列數(shù)][--no-headers]
[--group 群組名稱][-Group 群組識別碼][--pid 進(jìn)程識別碼]
[--rows 顯示列數(shù)][--sid 階段作業(yè)][--tty 終端機(jī)編號]
[--user 用戶名稱][--User 用戶識別碼][--version]
[--width 每列字符數(shù)]
? ?-a? 顯示所有終端機(jī)下執(zhí)行的進(jìn)程,除了階段作業(yè)領(lǐng)導(dǎo)者之外
a? 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程,包括其他用戶的進(jìn)程
-A? 顯示所有進(jìn)程
-c? 顯示CLS和PRI欄位
c? 列出進(jìn)程時(shí),顯示每個(gè)進(jìn)程真正的指令名稱,而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示
-C指令名稱 指定執(zhí)行指令的名稱,并列出該指令的進(jìn)程的狀況
-d 顯示所有進(jìn)程,但不包括階段作業(yè)領(lǐng)導(dǎo)者的進(jìn)程
-e 此參數(shù)的效果和指定"A"參數(shù)相同
e 列出進(jìn)程時(shí),顯示每個(gè)進(jìn)程所使用的環(huán)境變量
-f 顯示UID,PPIP,C與STIME欄位
f 用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)進(jìn)程間的相互關(guān)系
-g群組名稱 此參數(shù)的效果和指定"-G"參數(shù)相同,當(dāng)亦能使用階段作業(yè)領(lǐng)導(dǎo)者的名稱來指定
g 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程,包括群組領(lǐng)導(dǎo)者的進(jìn)程
-G群組識別碼 列出屬于該群組的進(jìn)程的狀況,也可使用群組名稱來指定
h 不顯示標(biāo)題列
-H 顯示樹狀結(jié)構(gòu),表示進(jìn)程間的相互關(guān)系
-j或j 采用工作控制的格式顯示進(jìn)程狀況
-l或l 采用詳細(xì)的格式來顯示進(jìn)程狀況
L 列出欄位的相關(guān)信息
-m或m 顯示所有的執(zhí)行緒
n 以數(shù)字來表示USER和WCHAN欄位
-N 顯示所有的進(jìn)程,除了執(zhí)行ps指令終端機(jī)下的進(jìn)程之外
-p進(jìn)程識別碼 指定進(jìn)程識別碼,并列出該進(jìn)程的狀況
? ?p進(jìn)程識別碼 此參數(shù)的效果和指定"-p"參數(shù)相同,只在列表格式方面稍有差異
r 只列出現(xiàn)行終端機(jī)正在執(zhí)行中的進(jìn)程
-s階段作業(yè) 指定階段作業(yè)的進(jìn)程識別碼,并列出隸屬該階段作業(yè)的進(jìn)程的狀況
? ? s 采用進(jìn)程信號的格式顯示進(jìn)程狀況
S 列出進(jìn)程時(shí),包括已中斷的子進(jìn)程資料
-t終端機(jī)編號 指定終端機(jī)編號,并列出屬于該終端機(jī)的進(jìn)程的狀況
t終端機(jī)編號 此參數(shù)的效果和指定"-t"參數(shù)相同,只在列表格式方面稍有差異
-T 顯示現(xiàn)行終端機(jī)下的所有進(jìn)程
-u用戶識別碼 此參數(shù)的效果和指定"-U"參數(shù)相同
u 以用戶為主的格式來顯示進(jìn)程狀況
-U用戶識別碼 列出屬于該用戶的進(jìn)程的狀況,也可使用用戶名稱來指定
U用戶名稱 列出屬于該用戶的進(jìn)程的狀況
v 采用虛擬內(nèi)存的格式顯示進(jìn)程狀況
-V或V 顯示版本信息
-w或w 采用寬闊的格式來顯示進(jìn)程狀況。
? ?x 顯示所有進(jìn)程,不以終端機(jī)來區(qū)分
? ?X 采用舊式的Linux i386登陸格式顯示進(jìn)程狀況
? ?-y 配合參數(shù)"-l"使用時(shí),不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位
-進(jìn)程識別碼 此參數(shù)的效果和指定"p"參數(shù)相同
--cols每列字符數(shù) 設(shè)置每列的最大字符數(shù)
--columns每列字符數(shù) 此參數(shù)的效果和指定"--cols"參數(shù)相同
--cumulative 此參數(shù)的效果和指定"S"參數(shù)相同
--deselect 此參數(shù)的效果和指定"-N"參數(shù)相同
--forest 此參數(shù)的效果和指定"f"參數(shù)相同
--headers 重復(fù)顯示標(biāo)題列
--help 在線幫助
--info 顯示排錯(cuò)信息
--lines顯示列數(shù) 設(shè)置顯示畫面的列數(shù)
--no-headers? 此參數(shù)的效果和指定"h"參數(shù)相同,只在列表格式方面稍有差異
--group群組名稱 此參數(shù)的效果和指定"-G"參數(shù)相同
--Group群組識別碼 此參數(shù)的效果和指定"-G"參數(shù)相同
--pid進(jìn)程識別碼 此參數(shù)的效果和指定"-p"參數(shù)相同
--rows顯示列數(shù) 此參數(shù)的效果和指定"--lines"參數(shù)相同
--sid階段作業(yè) 此參數(shù)的效果和指定"-s"參數(shù)相同
--tty終端機(jī)編號 此參數(shù)的效果和指定"-t"參數(shù)相同
--user用戶名稱 此參數(shù)的效果和指定"-U"參數(shù)相同
--User用戶識別碼 此參數(shù)的效果和指定"-U"參數(shù)相同
--version 此參數(shù)的效果和指定"-V"參數(shù)相同
? ?--widty每列字符數(shù) 此參數(shù)的效果和指定"-cols"參數(shù)相同
? ?-A 列出所有的行程
? ?-w 顯示加寬可以顯示較多的資訊
? -au 顯示較詳細(xì)的資訊
? -aux 顯示所有包含其他使用者的行程
linux上進(jìn)程有5種狀態(tài):?
1.?運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)?
2.?中斷(休眠中,?受阻,?在等待某個(gè)條件的形成或接受到信號)?
3.?不可中斷(收到信號不喚醒和不可運(yùn)行,?進(jìn)程必須等待直到有中斷發(fā)生)?
4.?僵死(進(jìn)程已終止,?但進(jìn)程描述符存在,?直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)?
5.?停止(進(jìn)程收到SIGSTOP,?SIGSTP,?SIGTIN,?SIGTOU信號后停止運(yùn)行運(yù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 aux //顯示所有正在內(nèi)存中的程序
USER:該?process?屬于那個(gè)使用者賬號的
PID?:該?process?的號碼
%CPU:該?process?使用掉的?CPU?資源百分比
%MEM:該?process?所占用的物理內(nèi)存百分比
VSZ?:該?process?使用掉的虛擬內(nèi)存量?(Kbytes)
RSS?:該?process?占用的固定的內(nèi)存量?(Kbytes)
TTY?:該?process?是在那個(gè)終端機(jī)上面運(yùn)作,若與終端機(jī)無關(guān),則顯示??,另外,?tty1-tty6?是本機(jī)上面的登入者程序,若為?pts/0?等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
STAT:該程序目前的狀態(tài),主要的狀態(tài)有
R?:該程序目前正在運(yùn)作,或者是可被運(yùn)作
S?:該程序目前正在睡眠當(dāng)中?(可說是?idle?狀態(tài)),但可被某些訊號?(signal)?喚醒。
D: 無法中斷的休眠狀態(tài) (通常 IO 的進(jìn)程)
T?:該程序目前正在偵測或者是停止了
Z?:該程序應(yīng)該已經(jīng)終止,但是其父程序卻無法正常的終止他,造成?zombie?(疆尸)?程序的狀態(tài)
: 高優(yōu)先序的行程
N: 低優(yōu)先序的行程
L: 有記憶體分頁分配并鎖在記憶體內(nèi) (實(shí)時(shí)系統(tǒng)或捱A I/O)
START:該?process?被觸發(fā)啟動(dòng)的時(shí)間
TIME?:該?process?實(shí)際使用?CPU?運(yùn)作的時(shí)間
COMMAND:該程序的實(shí)際指令
2、# ps -A 顯示進(jìn)程信息
3、# ps -u work //顯示work進(jìn)程用戶信息
4、# ps -ef //顯示所有命令,連帶命令行
5、# ps -l //將屬于自己這次登入的pid與相關(guān)信息顯示出來
F:代表這個(gè)程序的旗標(biāo)?(flag),?4?代表使用者為?super?user
S:代表這個(gè)程序的狀態(tài)?(STAT)
UID:程序被該?UID?所擁有
PID:就這個(gè)程序的?ID?
PPID:其上級父程序的ID
C:CPU使用的資源百分比
PRI:?Priority?(優(yōu)先執(zhí)行序)?的縮寫
NI:?Nice?值
ADDR: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á)的指令為何
在預(yù)設(shè)的情況下,?ps?僅會列出與目前所在的?bash?shell?有關(guān)的?PID,所以,?當(dāng)使用?ps?-l?的時(shí)候,只有三個(gè)?PID。
6、其他
1)可以用?|?管道和?more?連接起來分頁查看
命令:ps?-aux?|more
2)把所有進(jìn)程顯示出來,并輸出到ps001.txt文件
命令:ps?-aux??ps001.txt
3)輸出指定的字段
命令:ps -o pid,ppid,pgrp,session,tpgid,comm
Linux ps命令,英文全拼process
status。用于顯示當(dāng)前進(jìn)程的狀態(tài),類似于Windows的任務(wù)管理器。運(yùn)用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行地狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多地資源等等。
語法
ps [options] [--help]
參數(shù)(ps的參數(shù)比較多,在這里為大家簡單列舉幾個(gè)常用的)
-A 列出所有的進(jìn)程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:行程擁有者
PID:pid
%CPU:占用的CPU使用率
%MEM:占用的記憶體使用率
VSZ:占用的虛擬記憶體大小
RSS:占用的記憶體大小
TTY:終端的次要裝置號碼
STAT:該行程的狀態(tài)
①D 無法中斷的休眠狀態(tài)
②R 正在執(zhí)行中
③S 靜止?fàn)顟B(tài)
④T 暫停執(zhí)行
⑤Z 不存在但暫時(shí)無法消除
⑥W 沒有足夠的記憶體分頁可分配
⑦ 高優(yōu)先序的行程
⑧N 低優(yōu)先序的行程
⑨L 有記憶體分頁分配并鎖在記憶體內(nèi)
START:行程開始時(shí)間
TIME:執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令