Linux 查看進程
前面小節(jié)對文件和目錄的創(chuàng)建、刪除、移動、重命名、查看、修改等操作做了介紹,本小節(jié)開始學(xué)習(xí) Linux 進程相關(guān)的知識點,學(xué)習(xí)如何查看 Linux 中的進程信息,并介紹通過命令展示出來的進程信息。
1. 進程概念簡介
進程(Process)是系統(tǒng)中進行資源的分配和調(diào)度的基本單位,是系統(tǒng)中的軟件程序?qū)δ承?shù)據(jù)集合的運行活動,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。它可以申請和擁有系統(tǒng)資源,是一個動態(tài)的概念,是一個活動的實體。它不只是程序的代碼,還包括當前的活動,通過程序計數(shù)器的值和處理寄存器的內(nèi)容來表示。其定義如下:
-
狹義定義:進程是正在運行的程序的實例;
-
廣義定義:進程是一個具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進程既是基本的分配單元,也是基本的執(zhí)行單元。
2. 啟動一個進程
這里以啟動一個 nginx
服務(wù)為例,首先使用 yum
命令安裝 nginx
軟件,命令如下:
yum -y install nginx
執(zhí)行結(jié)果如下:
如上圖所示,已經(jīng)安裝好了 nginx
之后,可以使用如下命令啟動 nginx
服務(wù):
service nginx start
執(zhí)行結(jié)果如下:
啟動 nginx
之后可以使用本機瀏覽器訪問,但在訪問之前需要先將 Linux 防火墻關(guān)閉,命令如下:
systemctl stop firewalld
systemctl status firewalld
執(zhí)行結(jié)果如下圖:
關(guān)閉防火墻之后,就可以通過瀏覽器查看到 nginx 軟件服務(wù)展示的內(nèi)容:
3. 查看進程
在啟動一個軟件進程之后,可以使用 ps
命令查看啟動軟件的進程,命令如下:
ps -aux | grep nginx
執(zhí)行結(jié)果如下圖:
Tips:
ps -aux | grep nginx
中的ps
表示查看進程,aux
是進程跟的參數(shù),|grep nginx
表示使用管道查看nginx
的進程。
4. ps 命令參數(shù)介紹
Centos操作系統(tǒng)中進程的狀態(tài)有五種:
- 運行:正在運行或在運行隊列中等待;
- 中斷:休眠中,受阻,在等待某個條件的形成或接受到信號;
- 不可中斷:收到信號不喚醒和不可運行, 進程必須等待直到有中斷發(fā)生;
- 僵死:進程已終止, 但進程描述符存在, 直到父進程調(diào)用 wait4() 系統(tǒng)調(diào)用后釋放;
- 停止:進程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU 信號后停止運行運行。
ps
命令可以用來查看進程相關(guān)信息,下面列舉一些 ps
命令的參數(shù):
ps 命令參數(shù)名稱 | 功能與作用描述 |
---|---|
-a | 顯示現(xiàn)行終端機下的所有程序,包括其他用戶的程序。 |
-A | 顯示所有程序。 |
-c | 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數(shù)或常駐服務(wù)的標示。 |
-e | 此參數(shù)的效果和指定 A 參數(shù)相同。 例如: ps -e |
e | 列出程序時,顯示每個程序所使用的環(huán)境變量。 |
f | 用ASCII字符顯示樹狀結(jié)構(gòu),表達程序間的相互關(guān)系。 |
-H | 顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。 |
-N | 顯示所有的程序,除了執(zhí)行ps指令終端機下的程序之外。 |
-s | 采用程序信號的格式顯示程序狀況。 |
-S | 列出程序時,包括已中斷的子程序資料。 |
-u | 以用戶為主的格式來顯示程序狀況。 |
-x | 顯示所有程序,不以終端機來區(qū)分。 |
Tips:使用上述一個或者多個參數(shù)可以查看到指定的進程信息。
5. 實時監(jiān)測進程
上面介紹的 ps
命令只能查看輸入命令那一刻獲取到的進程信息,而 top
命令可以實時監(jiān)測進程信息:
執(zhí)行結(jié)果如下圖:
如上圖所示展示的是實時進程監(jiān)測信息,下面對這些信息進程說明:
- PID:進程號或進程ID;
- USER:進程屬主的名字;
- PR:進程的優(yōu)先級;
- NI:進程的謙讓度值;
- VIRT:進程占用的虛擬內(nèi)存總量;
- RES:進程占用的物理內(nèi)存總量;
- SHR:進程和其他進程共享的內(nèi)存總量;
- S:進程的狀態(tài),
D
表示可中斷的休眠狀態(tài),R
表示運行狀態(tài),S
表示休眠狀態(tài),T
表示跟蹤狀態(tài)或停止狀態(tài),Z
表示僵化狀態(tài); - %CPU:進程使用的 CPU 時間比例;
- %MEM:進程使用的內(nèi)存占可用內(nèi)存的比例;
- TIME+:自進程啟動到目前為止 CPU 時間總數(shù);
- COMMAND:進程所對應(yīng)的命令行名稱,也就是程序啟動時的程序名。
Tips:
top
命令展示出來的信息默認是按照%CPU
的值從大到小排序的。
6. 小結(jié)
本小節(jié)介紹了,如何啟動一個 nginx
程序進程,然后使用 ps -aux | grep nginx
命令查看 nginx
相關(guān)的進程信息,ps
和 top
命令都能查看進程信息,ps
查看的是輸入命令之后那一刻的進程信息,而 top
命令可以實時監(jiān)測進程信息,這些命令和參數(shù)在實際業(yè)務(wù)中特別重要,能快速看到那些軟件應(yīng)用的運行狀態(tài),它們占用的資源大小信息,從而可以很好地對系統(tǒng)和軟件優(yōu)化。