在Linux 程序的運(yùn)行實(shí)例稱為進(jìn)程。有時(shí)在Linux工作時(shí),您可能需要找出當(dāng)前正在運(yùn)行的進(jìn)程。
您可以使用許多命令來查找正在運(yùn)行進(jìn)程的信息,ps與top也是最常用的命令。
在教程中,我們將討論如何在Linux使用ps命令列出正在運(yùn)行的進(jìn)程以及打印進(jìn)程的信息。
ps命令的語法是ps [OPTIONS]。出于歷史和兼容性的原因,ps命令接受幾種不同類型的選項(xiàng)。
UNIX風(fēng)格選項(xiàng),這種通常在ps命令后跟一個(gè)破折號。BSD風(fēng)格選項(xiàng),不帶破折號。GNU長選項(xiàng),后跟兩個(gè)破折號。
你可以混合使用多種選項(xiàng),但在某些情況下可能會出現(xiàn)沖突,因此最好堅(jiān)持使用一種類型的選項(xiàng)。BSD和UNIX風(fēng)格是最常用的。
不帶任何選項(xiàng)運(yùn)行ps命令,是最簡單的形式。ps命令將打印四列信息,顯示當(dāng)前shell程序中正在運(yùn)行的兩個(gè)進(jìn)程。shell程序本身以及調(diào)用ps命令時(shí)運(yùn)行的進(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ù)情況下,運(yùn)行ps命令時(shí),用戶尋找的最重要的信息是進(jìn)程PID。了解PID可以使您終止故障進(jìn)程。
TTY進(jìn)程控制終端的名稱。TIME進(jìn)程使用CPU的時(shí)間,以分鐘和秒為單位。CMD創(chuàng)建該進(jìn)程的命令名稱。
上面的輸出不是很有用,因?yàn)樗男畔⒉欢?。?dāng)使用其他選項(xiàng)運(yùn)行ps命令時(shí),ps命令的真正功能才能體現(xiàn)出來。
ps命令接受大量選項(xiàng),這些選項(xiàng)可用于顯示指定的一組進(jìn)程以及進(jìn)程的信息,但是在日常使用中只需要少數(shù)幾個(gè)選項(xiàng)。ps命令最常與以下選項(xiàng)組合使用。
PS命令BSD風(fēng)格
如果以BSD的風(fēng)格運(yùn)行PS命令是不帶破折號-的,例如命令ps aux,將使用BSD風(fēng)格選項(xiàng)來查看進(jìn)程信息。
a選項(xiàng)將會展示所有用戶的進(jìn)程,但不包括關(guān)聯(lián)終端的進(jìn)程以及進(jìn)程的父進(jìn)程。u代表一種面向用戶的格式,提供進(jìn)程的詳細(xì)信息。
x選項(xiàng)讓ps沒有控制終端的進(jìn)程。這包括在啟動時(shí)在后臺運(yù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個(gè)的列的信息USER,PID,%CPU,%MEM,VSZ,RSS,STAT,START,TTY,TIME和CMD。
我們已經(jīng)解釋PID,TTY,TIME和CMD列。這是其他標(biāo)簽列的說明,USER運(yùn)行進(jìn)程的用戶。
%CPU進(jìn)程的cpu利用率。%MEM進(jìn)程的駐留空間大小占計(jì)算機(jī)物理內(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正在運(yùn)行進(jìn)程等。START命令開始的時(shí)間。
要打印進(jìn)程樹,請?zhí)砑?code>f選項(xiàng)。這將指示ps命令顯示父進(jìn)程到子進(jìn)程的樹視圖。例如命令ps auxf將會打印進(jìn)程樹視圖。
ps命令還允許您對輸出進(jìn)行排序。例如,要根據(jù)內(nèi)存使用情況對輸出進(jìn)行排序,則可以運(yùn)行命令ps aux --sort=-%mem。
ps auxf
ps aux --sort=-%mem
PS命令UNIX風(fēng)格
ps -ef命令是Unix風(fēng)格最常使用的命令,e選項(xiàng)指示ps列出所有進(jìn)程。f列出進(jìn)程的詳細(xì)信息。
ps -ef命令將顯示8列的信息包括UID,PID,PPID,C,STIME,TIME和CMD。
UID與BSD風(fēng)格的PS命令的USER列相同,表示運(yùn)行進(jìn)程的用戶。PPID父進(jìn)程的ID。
C與相同%CPU列相同,表示進(jìn)程的cpu利用率。STIME與START列相同,表示命令啟動的時(shí)間。
要僅查看以指定用戶運(yùn)行的進(jìn)程,請運(yù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選項(xiàng),后跟要打印的列名,ps命令將會僅展示你指定的列名。
例如要僅打印PID,COMMAND的信息。您將運(yùn)行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)行故障排除時(shí),ps命令是最常用的命令之一。它有很多選項(xiàng),通常大多數(shù)用戶都使用ps aux或ps -ef來收集正在運(yùn)行的進(jìn)程的信息。
個(gè)人建議使用BSD風(fēng)格,簡單且已讀。要查看所有可用ps選項(xiàng)的信息,請?jiān)诮K端中輸入man ps。
-
Linux
+關(guān)注
關(guān)注
88文章
11628瀏覽量
217977 -
命令
+關(guān)注
關(guān)注
5文章
746瀏覽量
23446 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
208瀏覽量
14478
發(fā)布評論請先 登錄

如何在Linux使用ps命令
評論