在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選項將會展示所有用戶的進程,但不包括關(guān)聯(lián)終端的進程以及進程的父進程。u代表一種面向用戶的格式,提供進程的詳細信息。
x選項讓ps沒有控制終端的進程。這包括在啟動時在后臺運行的進程,例如服務(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列。這是其他標簽列的說明,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
結(jié)論
對Linux問題進行故障排除時,ps命令是最常用的命令之一。它有很多選項,通常大多數(shù)用戶都使用ps aux或ps -ef來收集正在運行的進程的信息。
個人建議使用BSD風格,簡單且已讀。要查看所有可用ps選項的信息,請在終端中輸入man ps。
-
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219004 -
命令
+關(guān)注
關(guān)注
5文章
755瀏覽量
23744 -
進程
+關(guān)注
關(guān)注
0文章
211瀏覽量
14532
發(fā)布評論請先 登錄
如何在Linux使用ps命令
評論