Linux進程管理詳解,linux進程管理

來源:互聯網
上載者:User

Linux進程管理詳解,linux進程管理

     

     何謂進程?進程,就是正在執行的一個程式或命令,每一個進程都是一個運行實體,有自己的地址空間,並佔用一定的系統資源。簡而言之,進程就是運行中的程式。在Linux中,諸如ls等命令都是進程,只不過某些命令進程在運行完後立即關閉了。而像apache等常駐記憶體服務也會產生進程,例如,一個使用者訪問一個apache下的網站,必定會產生一個進程。Linux中有各種各樣的進程,尤其是在伺服器中,我們需要即時瞭解系統中所有進程的狀態,因此本篇文章將針對進程的管理進行詳細地講解。

 

      在具體講解進程管理前,我們先討論一下進程管理的作用。總的來說,進程管理具有如下三個作用:

  • 判斷伺服器健康狀態:這是進程管理中最主要的作用,通過分析進程的狀態(記憶體、CPU佔有率等)判斷伺服器的負載和安全狀態。
  • 查看系統中的所有進程:這是進程管理的基礎,通過查看系統中的所有進程狀態才能決定對進程作出什麼樣的管理。
  • 殺死進程:進程管理中的輔助手段,殺死進程只是迫不得已的做法,一般情況下,進程都有正常的退出方法,只有進程不能正常結束時,才使用殺死進程的方法。

  在瞭解了進程管理的作用後,我們來看進程查看命令的使用。進程查看命令主要有ps、pstree、top三個命令,下面我們逐一講解。

 

    命令選項:

  • -a :顯示一個終端所有的進程
  • -u:顯示進程的歸屬使用者和記憶體佔用情況
  • -x:顯示沒有控制終端的進程
  • -l:長格式顯示更詳細的資訊
  • -e:顯示所有進程

    命令組合:總的來說,ps命令具有兩種組合格式,一種是ps aux,一種是ps -le。

  • ps aux:查看系統中的所有進程,使用BSD作業系統格式

                        

註:ps aux和ps -aux命令有區別,在ubuntu中ps -aux不會報錯,而在centos中,ps -aux會提示警告資訊。使用man ps可以查看文檔描述,但是在使用過程中不必糾結於二者的區別。

     

 

  • ps -le:查看系統中的所有進程,使用Linux標準格式

   

在實際使用過程中,我們沒有必要對ps命令輸出的所有進程都認識,應該關注的是每一列輸出資訊代表的含義是什麼。下面以ps aux為例,講解對應列的含義:

  • USER:產生該進程的使用者。
  • PID:進程的ID。
  • %CPU:該進程佔用的CPU資源百分比。
  • %MEM:該進程佔用實體記憶體百分比。
  • VSZ:該進程佔用虛擬記憶體的大小,單位KB。
  • RSS:該進程佔用的實際實體記憶體大小,單位KB。
  • TTY:該進程是在哪個中斷啟動並執行,其中tty1-tty7代表本地控制終端,tty1-tty6為字元終端,tty7為圖形終端。pts/0-255代表虛擬終端。
  • STAT:進程狀態。常見狀態有:
    • R:運行
    • S(大寫):睡眠
    • T:停止狀態
    • s(小寫):包含子進程
    • +:後台進程
  • START:該進程的啟動時間。
  • TIME:該進程佔用CPU的運算時間。
  • COMMAND:進程名

    (註:PID等於1的進程 /sbin/init 是系統的啟動進程,是系統中所有進程的父進程)

 

  2.pstree命令產看進程樹

    命令選項:

  • -p:顯示進程的PID
  • -u:顯示進程的所屬使用者

    

直接使用pstree命令,輸出的是系統的進程樹,其中相同名稱的進程使用數字*進程名的形式輸出,使用pstree -p命令可以將不同PID的進程展開:

    

 

  3.top命令查看進程狀態

    命令選項:

  • -d 秒數:指定top命令每隔幾秒更新,預設是3秒。
  • -b:使用批處理模式輸出,一般和-n合用。
  • -n 次數:指定top命令執行的次數。

    top命令互動模式下的命令:

  • ?或h:顯示互動模式的協助文檔。
  • p:以CPU使用率排序,預設。
  • M:以記憶體使用量率排序。   
  • N:以PID排序
  • q:退出top命令互動模式

    一般的,在終端輸入top命令即進入了top互動模式:

                  

    此時可以鍵入互動模式下的命令對輸出進行不同的排序。在top命令下,我們重點關注最上面五行系統資訊:

  • 11:31:20 :系統目前時間,預設每3秒更新。
  • up 113days,16:20 :系統已運行113天16個小時20分鐘。
  • 3 users:當前登入了3個使用者。
  • load average:0.00,0.00,0.00 :系統在之前1分鐘,5分鐘,15分鐘的平均負載,一般認為對於每一個CPU核心,該數值小於1時系統負載較小,大於1時系統負載較大。
  • Tasks:112total :系統中的進程總數。
  • 2 running:正在啟動並執行進程數。
  • 110 sleeping:睡眠進程數。
  • 0 stopped:正在停止的進程。
  • 0 zombie:殭屍進程。
  • Cpu(s):0.3%us :使用者模式佔用的cpu百分比。
  • 0.3%sy:系統模式佔用的cpu百分比。
  • 0.0%sy:改變過優先順序的使用者進程佔用百分比。
  • 99.3%id:空閑cpu的百分比。
  • 0.0%wa:等待輸入/輸出的進程佔用cpu百分比。
  • 0.0%hi:硬插斷要求服務佔用cpu百分比。
  • 0.0%si:非強制中斷請求服務佔用cpu百分比。
  • 0.0%st:虛擬時間百分比。
  • 第四行為實體記憶體的資訊,第五行為交換分區的資訊,單位為kb,注意buffers是用作緩衝的記憶體大小,cached是用作緩衝的記憶體大小。

 

  4.kill命令終止進程

  • kill -l(字母l):查看所有訊號。

      

 

  其中,重點關注kill -1(數字1)和kill -9。kill -1用於重啟進程(而不是殺死),不影響現有進程的使用,一般在修改某種服務的設定檔之後使用該命令;kill -9用於強制終止進程,基本格式為 kill [數字]進程PID。

 

  • killall命令:基本格式為killall [選項][訊號]進程名。killall的選項有-i和-I,-i用於互動,詢問是否殺死某個進程,-I用於忽略進程名的大小寫。

        

  • pkill命令:基本格式為pkil [選項][訊號]進程名 。選項-t 終端號 用於按照終端號踢出使用者。

  首先使用w命令查看目前使用者,可以見到共有四個遠端使用者終端,當前正在使用的終端為pts/4,因為其正在使用w命令。接著用pkill命令踢出pts/0,再次用w命令查看,可見此時pts/0使用者已被踢出。

        

 

 

   5.優先順序修改nice命令:基本格式為nice -n 數值 進程名。在前面ps -le命令中,表示優先順序的列有PRI(priority)和NI(nice),真正的優先順序由PRI決定,數值越小優先順序越高。使用者只能修改NI的值,修改後的PRI=原PRI+NI。為修改apache服務進程的優先順序樣本。由於優先順序對日常使用無很大影響,此處不加贅述,有興趣的可以自行查閱相關資料。

     

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.