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