? ? ? ? 對于在linux系統(tǒng)開發(fā)的工程師來說,ps命令是經(jīng)常使用的命令,這個命令可以用來查看進(jìn)程的進(jìn)程id疙筹,父進(jìn)程id壶冒,進(jìn)程狀態(tài)等信息缕题,但是對于ps的用法卻總感覺不是很熟悉的感覺,這里特意花時間整理了ps命令的疑點和常用方式依痊。
? ? ? ? ?首先ps是一個有歷史的命令避除,在unix時期就已經(jīng)存在,后來linux系統(tǒng)也繼承了這個命令胸嘁,同時其功能是一樣的瓶摆,但是由于系統(tǒng)創(chuàng)建者不同,其展示風(fēng)格有差異性宏,總共有三種風(fēng)格:
UNIX 風(fēng)格群井,選項可以組合在一起, 選項前必須有“-”連字符
BSD 風(fēng)格毫胜,選項可以組合在一起书斜,但是選項前不能有“-”連字符诬辈。BSD是unix的一個分支
GNU 風(fēng)格的長選項,選項前有兩個“-”連字符荐吉。GUN計劃焙糟,后來發(fā)展出了Linux
例如 ps -ef 是unix風(fēng)格? ? 而 ps aux就是BSD風(fēng)格,
? ? ? ?兩種風(fēng)格顯示的選項還是有一點的差別的样屠,但是今天的重點是了解ps命令的選項及列的內(nèi)涵穿撮,只有這樣才能在我們需要查看進(jìn)程的信息時能準(zhǔn)確的獲取到而不是像以前一樣對其一知半解。
ps的-A 是顯示系統(tǒng)運行的所有進(jìn)程痪欲,不管是后臺進(jìn)程悦穿,還是與終端無關(guān)的進(jìn)程或者是會話進(jìn)程。
ps -e 這個和上面的效果是一樣业踢。
ps -a 顯示除了會話的創(chuàng)建者(在linux這種多用戶系統(tǒng)中栗柒,每個用戶登錄就是一個會話,然后其創(chuàng)建的進(jìn)程就屬于這個會話進(jìn)行管理)和與終端無關(guān)的進(jìn)程----終端無關(guān)的進(jìn)程就是 tty那列顯示問號的知举?瞬沦。
ps a顯示所有和終端有關(guān)的進(jìn)程,就是 tty那列不為负蠕?的蛙埂。(與終端有關(guān)還是無關(guān)是決定這個進(jìn)程在窗口關(guān)閉后是否還能繼續(xù)執(zhí)行的關(guān)鍵,比如nginx和php-fpm這種進(jìn)程就不能與終端有關(guān)遮糖,需要一直在后臺運行)绣的。
ps T 顯示當(dāng)前終端的進(jìn)程,就是tty列為當(dāng)前終端值的進(jìn)程欲账。
ps x 顯示屬于當(dāng)前用戶的進(jìn)程 ?等于 ps -u 用戶名屡江。
ps -ax 這個值不存在 ?只有 ps ax 結(jié)果就是 ps -A或ps -e。
ps -d 顯示除了會話創(chuàng)建者外的所有進(jìn)程赛不。
ps -f 表示full 表示詳細(xì)內(nèi)容惩嘉。
ps -H?hierarchy表是層級關(guān)系,這個不太常用踢故,可以忽略文黎。
ps C 表示cpu占用。
ps -o 后邊跟 format 格式殿较。
ps? -eo pid,ppid,s(進(jìn)程狀態(tài) 就是stat),cmd(運行進(jìn)程的命令),tty,etime(進(jìn)程運行的時長耸峭,e是elapse的縮寫),lstart(進(jìn)程開始時間),uname(用戶名)。
連接了上面這些選項后 ps這個命令在日常的使用中基本算是掌握了淋纲。對于這個命令中的終端劳闹,會話等概念會在下篇文章進(jìn)行講解。