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