在Linux 程序的運行實例稱為進(jìn)程。有時在Linux工作時,您可能需要找出當(dāng)前正在運行的進(jìn)程。
您可以使用許多命令來查找正在運行進(jìn)程的信息,ps
與top
也是最常用的命令。
在教程中,我們將討論如何在Linux使用ps
命令列出正在運行的進(jìn)程以及打印進(jìn)程的信息。
ps
命令的語法是ps [OPTIONS]
。出于歷史和兼容性的原因,ps
命令接受幾種不同類型的選項。
UNIX風(fēng)格選項,這種通常在ps命令后跟一個破折號。BSD風(fēng)格選項,不帶破折號。GNU長選項,后跟兩個破折號。
你可以混合使用多種選項,但在某些情況下可能會出現(xiàn)沖突,因此最好堅持使用一種類型的選項。BSD和UNIX風(fēng)格是最常用的。
不帶任何選項運行ps
命令,是最簡單的形式。ps
命令將打印四列信息,顯示當(dāng)前shell程序中正在運行的兩個進(jìn)程。shell程序本身以及調(diào)用ps命令時運行的進(jìn)程。
ps
PID TTY TIME CMD
1809 pts/0 00:00:00 bash
2043 pts/0 00:00:00 ps
四列分別標(biāo)記PID
,TTY
,TIME
和CMD
。PID
是進(jìn)程ID。
在大多數(shù)情況下,運行ps
命令時,用戶尋找的最重要的信息是進(jìn)程PID。了解PID可以使您終止故障進(jìn)程。
TTY
進(jìn)程控制終端的名稱。TIME
進(jìn)程使用CPU的時間,以分鐘和秒為單位。CMD
創(chuàng)建該進(jìn)程的命令名稱。
上面的輸出不是很有用,因為它包含的信息不多。當(dāng)使用其他選項運行ps
命令時,ps
命令的真正功能才能體現(xiàn)出來。
ps
命令接受大量選項,這些選項可用于顯示指定的一組進(jìn)程以及進(jìn)程的信息,但是在日常使用中只需要少數(shù)幾個選項。ps
命令最常與以下選項組合使用。
PS命令BSD風(fēng)格
如果以BSD的風(fēng)格運行PS命令是不帶破折號-
的,例如命令ps aux
,將使用BSD風(fēng)格選項來查看進(jìn)程信息。
a
選項將會展示所有用戶的進(jìn)程,但不包括關(guān)聯(lián)終端的進(jìn)程以及進(jìn)程的父進(jìn)程。u
代表一種面向用戶的格式,提供進(jìn)程的詳細(xì)信息。
x
選項讓ps
沒有控制終端的進(jìn)程。這包括在啟動時在后臺運行的進(jìn)程,例如服務(wù)。
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 77616 8604 ? Ss 19:47 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:47 0:00 [kthreadd]
...
ps aux
命令將顯示11個的列的信息USER
,PID
,%CPU
,%MEM
,VSZ
,RSS
,STAT
,START
,TTY
,TIME
和CMD
。
我們已經(jīng)解釋PID
,TTY
,TIME
和CMD
列。這是其他標(biāo)簽列的說明,USER
運行進(jìn)程的用戶。
%CPU
進(jìn)程的cpu利用率。%MEM
進(jìn)程的駐留空間大小占計算機物理內(nèi)存的百分比。
VSZ
進(jìn)程的虛擬內(nèi)存大小,以KiB作為單位。RSS
進(jìn)程正在使用的物理內(nèi)存的大小。
STAT
進(jìn)程狀態(tài)代碼,可以是Z
僵尸進(jìn)程,S
正在休眠進(jìn)程,R
正在運行進(jìn)程等。START
命令開始的時間。
要打印進(jìn)程樹,請?zhí)砑?code>f選項。這將指示ps命令顯示父進(jìn)程到子進(jìn)程的樹視圖。例如命令ps auxf
將會打印進(jìn)程樹視圖。
ps
命令還允許您對輸出進(jìn)行排序。例如,要根據(jù)內(nèi)存使用情況對輸出進(jìn)行排序,則可以運行命令ps aux --sort=-%mem
。
ps auxf
ps aux --sort=-%mem
PS命令UNIX風(fēng)格
ps -ef
命令是Unix風(fēng)格最常使用的命令,e
選項指示ps
列出所有進(jìn)程。f
列出進(jìn)程的詳細(xì)信息。
ps -ef
命令將顯示8列的信息包括UID
,PID
,PPID
,C
,STIME
,TIME
和CMD
。
UID
與BSD風(fēng)格的PS命令的USER
列相同,表示運行進(jìn)程的用戶。PPID
父進(jìn)程的ID。
C
與相同%CPU
列相同,表示進(jìn)程的cpu利用率。STIME
與START
列相同,表示命令啟動的時間。
要僅查看以指定用戶運行的進(jìn)程,請運行命令ps -f -U myfreax -u myfreax
,其中myfreax
用戶名。
ps -ef
ps -f -U myfreax -u myfreax
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 19:47 ? 00:00:01 /sbin/init
root 2 0 0 19:47 ? 00:00:00 [kthreadd]
...
打印指定列
如果你需要太多列的進(jìn)程信息,可以使用o
選項,后跟要打印的列名,ps
命令將會僅展示你指定的列名。
例如要僅打印PID
,COMMAND
的信息。您將運行unix風(fēng)格的命令ps -efo pid,comm
。或者BSD風(fēng)格的命令ps auxo pid,comm
。
ps -efo pid,comm #UNIX
ps auxo pid,comm #BSD
PS命令與管道
ps可以通過命令與其它命令組合使用。如果你分頁顯示ps命令的信息,則可以通過管道符|
,傳遞給less命令,以達(dá)到分頁的查看目的。
ps命令的輸出也可以通過管道|
傳遞給grep進(jìn)行過濾。比如僅展示root用戶的進(jìn)程。
ps -ef | less
ps -ef | grep root
結(jié)論
對Linux問題進(jìn)行故障排除時,ps
命令是最常用的命令之一。它有很多選項,通常大多數(shù)用戶都使用ps aux
或ps -ef
來收集正在運行的進(jìn)程的信息。
個人建議使用BSD風(fēng)格,簡單且已讀。要查看所有可用ps
選項的信息,請在終端中輸入man ps
。
-
Linux
+關(guān)注
關(guān)注
87文章
11161瀏覽量
208468 -
命令
+關(guān)注
關(guān)注
5文章
663瀏覽量
21956 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
198瀏覽量
13933
發(fā)布評論請先 登錄
相關(guān)推薦
評論