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