【Linux】進程的查看詳解

      在linux系統當中:觸發任何一個事件時,系統都會將它定義成爲一個進程,並且給予這個進程一個ID,稱爲PID,同時依據觸發這個進程的用戶與相關屬性關係,給予這個PID一組有效的權限設置。

進程的相關知識:

1、進程與程序概念的區分:

程序:程序是靜態的文件,通常爲二進制程序放置在存儲媒介中(如硬盤、光盤、軟盤、磁帶等),以物理文件的形式存在。例如:/etc/init.d/httpd  本身是一個軟件代碼

進程:進程是動態的,是運行着的程序。程序被觸發執行後,執行者的權限與屬性、程序的程序代碼與所需數據等都會被加載到內存中,操作系統並給予這個內存內的單元一個標識符(PID),可以說,進程就是一個正在運行中的程序。例如:如果啓動/etc/init.d/httpd start 會產生對應的進程,是動態概念。

注意:程序和進程無一一對應關係。一個程序可以由多個進程共用;另一個方面,一個進程在活動中有可順序地執行若干個程序。

2、子進程和父進程:

PPID就是父進程的PID;從上面可以看出,後一個的進程的父進程就是一個的進程號,子進程由有一個進程所產生的進程,產生這個子進程的進程成爲父進程;在linux系統中,使用系統調用fork創建進程(創建進程)。fork複製的內容包括父進程的數據和堆棧段以及父進程的進程環境,使得子進程實現了繼承;當父進程終止子進程自然終止(如果父進程終止,而子進程沒有終止,則子進程變成孤兒進程,其父進程會自動指向init進程;如果子進程終止,而父進程不知道,則子進程會變成殭屍進程)

進程的查看:

1、進程查看ps指令:

常用選項:

   a 顯示所有用戶的進程

   x 通常與a參數一起用,可列出完整的信息

   e 顯示所有進程,包括沒有控制終端的進程

   L 長格式顯示

常用命令:

   ps 查看隸屬於自己的進程

   ps -u or -l 查看隸屬於自己進程詳細信息

   ps -le or aux 查看所有用戶執行的進程的詳細信息


ps aux 查看系統所有的進程數據;

USER 該進程屬於哪個用戶賬號的

PID  該進程的進程標識符

%CPU  該進程使用掉的cpu資源百分比

%MEM 該進程所佔用的物理內存百分比

VSZ  該進程使用掉的虛擬內存量(KB)

RSS   該進程佔用的真實的內存量

TTY 該進程是在哪個終端機上面運行,若與終端機無關,則顯示?另外,tty1-tty6是本機上面的登陸者程序,若爲pts/0等的,則表示爲由網絡連接進主機的進程。 

 STAT 該進程目前的狀態,狀態和底下分類一樣,至於後邊加的,表示的意義。

       < 高優先級的

        N 低優先級的

       L 有內存分頁但是帶鎖

       小寫s 包含子進程

       小寫l   多線程

       +   前臺程序,前臺和它交互的程序()

 START 該進程被觸發啓動的時間 

 TIME 該進程實際使用CPU運行的時間

 COMMAND 該進程的實際命令



Ps -l 僅查看自己的bash相關進程

F 進程標誌 4 此進程的權限爲root

                  1 此進程僅可進行復制(fork)而無法被執行(exec)

S 進程狀態 R:該進程正在運行中

                  S:該進程目前正在睡眠狀態(idle),但可以被喚醒(signal)

                  D: 不可被喚醒的睡眠狀態,通常這個進程可能在等待I/O的情況(ex>打印)

                  T:停止狀態,stop,可能是在工作控制(後臺暫停)或除錯(traced)狀態

                  Z:“殭屍”狀態,進程已經終止但卻無法被刪除至內存外

(注意:比如 ctrl+z 就是stop一個進程,ctrl-c是發送SIGINT,終止一個進程,Ctrl-z 是發送SIGSTOP信號,掛起一個進程)




UID/PID/PPID  代表此進程被該UID所擁有/進程的PID號碼/此進程的父進程PID號碼

C CPU使用率,單位爲百分比

PRI/NI  代表此進程被CPU所執行的優先級。數值越小代表該進程越快被CPU執行

ADDR/SZ/WCHAN 都與內存有關,ADDR表示該進程在內存的哪個部分,如果是running的進程,一般會顯示”-“,SZ表示此進程用掉多少內存;WCHAN表示目前進程是否運行中,同樣,若是-表示正在運行中

TTY  登陸者的終端機位置,若爲遠程登陸則使用動態終端接口(pts/n)

TIME 使用掉的CPU的時間,注意,是此進程實際花費CPU運行的時間,而不是系統時間

CMD  造成此程序的觸發進程的命令爲何用途

列出佔有CPU最多的10個進程:ps -eo comm,pcpu --sort -pcpu | head



2、top動態查看進程的變化:

        Top也是程序查看工具,但是不同於ps是靜態的結果輸出,top這個程序可以持續檢測整個系統的進程工作狀態。


05:49:43 目前的時間 

up 14 min 開機到目前爲止所經過的時間

2 user 已經登陸系統的用戶人數

load average:0.00,0.03,0.06  系統的平均工作負荷

Task:130 total  進程總數 (後面依次爲狀態的數量)

   1 running        正在運行的進程數

   129sleeping     睡眠的進程數

    0 stopped        停止的進程數

    0 zombie           殭屍進程數

%Cpu(s): 系統用戶進程使用CPU百分比,%CPU是每個核的CPU佔用率之和算出來的

mem 物理內存

swap 虛擬內存交換區

注:Swap分區,即交換區,Swap空間的作用可簡單描述爲:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行 的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從 Swap中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。其實,Swap的調整對Linux服務器,特別是Web服務器 的性能至關重要。通過調整Swap,有時可以越過系統性能瓶頸,節省系統升級費用。

PID  USER  PR  NI VIRT    RES    SHR S %CPU %MEM  TIME+ COMMAND 

PID:進程ID 

USER:進程所屬的用戶 

PR:Priority的簡寫,進程的優先執行順序,越小越早被執行

NI:Nice的簡寫,與priority有關,也是越早越被執行

VIRT:進程使用的虛擬內存總量

RES:進程使用的、未被使出的物理內存大小

SHR:共享內存大小

%CPU:CPU的使用率

%MEM:內存的使用率

TIME+:CPU使用時間的累加

COMMAND:命令行

在top執行的過程中,可以使用以下按鍵命令:

?顯示在top當中可以輸入的按鍵命令

P  以CPU的使用資源排序顯示

M  以內存的使用資源排序顯示

N  以PID來排序

T  由該進程使用的cpu時間累積(TIME+)排序

小寫k 給予某個PID一個信號

小寫r 給予某個PID重新定義一個nice值

小寫q 離開top軟件的按鍵

pstree查看各進程間的關係:

      由pstree輸出可以清楚的知道,所有的進程都是依附在init這個進程下面,這個進程的id號是1,是由linux內核所主動調用的第一個進程。如果子進程掛掉或是老是殺不掉子進程時,就可以用pstree來找到父進程來殺掉!進程是貫穿了整個操作系統,以上便是對 ps top 指令的一些個人總結,有不足的地方歡迎大家批評指正~

發佈了85 篇原創文章 · 獲贊 110 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章