Linux-進程管理

本小節介紹

 1、進程的描述

 2、用戶怎么樣管理進程

 3、進程管理的命令

進程的概念

       內核的功能:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等。
       Process:運行中的程序的一個副本,是被載入內存的一個指令集合;
                     進程ID(ProcessID ,PID)號碼被用來標記各個進程;
                     UID,GID,和SELINUX語境決定對文件系統的存取和訪問權限,通常從執行進程的用戶來繼承;
                     存在生命周期。
      進程創建: init:第一個進程 父子關系

      進程ID(PID):進程開始后指派給此進程的唯一標識符。

      父進程ID(PPID):創建了當前進程的父進程的PID  

      進程狀態:

                Linux內核:搶占式多任務 
      進程類型: 
              守護進程: daemon,在系統引導過程中啟動的進程,和終端無關進程 
              前臺進程:跟終端相關,通過終端啟動的進程 
              注意:兩者可相互轉化  
       進程狀態: 
               運行態:running 
               就緒態:ready 
               睡眠態: 
                        可中斷:interruptable 
                        不可中斷:uninterruptable 
               停止態:stopped,暫停于內存,但不會被調度,除非手動啟動 
               僵死態:zombie,結束進程,父進程結束前,子進程不關閉 

系統管理工具
               進程的分類: 
              CPU-Bound:CPU密集型,非交互
              IO-Bound:IO密集型,交互

        Linux系統狀態的查看及管理工具:pstree,ps,pidof,pgrep,top, htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup
       為了管理這些進程,用戶應該能夠:

                     查看所有運行中的進程

                     查看進程消耗資源

                     定位個別進程并且對其執行制定操作

                     改變進程的優先級

                     殺死指定進程

                     限制進程可用的系統資源等
   

下面來詳細說明執行上述進程管理的命令:


          pstree命令:顯示進程樹的結構(pstree – display a tree of processes)。

          linux中,每一個進程都是由其父進程創建的。此命令以可視化方式顯示進程,通過顯示進程的樹狀圖來展示進程間關系。

        如果指定了pid了,那么  樹 的根是該pid,不然將會是init(pid: 1)如下圖:

           Linux-進程管理                       

   

查看進程ps

            ps:process stat 進程狀態,
                ps – report a snapshot of the current processes
                Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中。

           ps [OPTION]
                   支持三種選項:
                         UNIX選項 如: -A   -e
                         BSD選項  如: a 
                        GNU選項  如–help
                 選項:默認顯示當前終端中的進程
                  a 選項包括所有終端中的進程
                  x 選項包括不鏈接終端的進程
                  u 選項顯示進程所有者的信息
                  f 選項顯示進程的父進程
                  k | –sort 對屬性排序
                  o 屬性…選項顯示定制的信息
                         pid ;cmd; %cpu ;%mem ;state ;tty ;euser; ruser(進程真正的發起者)

                  -e: 顯示所有進程

                  -f:  顯示完整格式程序信息

                  -E:顯示更完整格式的進程信息

                  -H:以進程層級格式顯示進程相關信息

        常用選項組合:

             #ps -a  列出所有運行中的進程

             #ps -ef | grep  可以配合grep正則表達式列出需要的進程

             #ps -C f1.sh  單獨顯示進程

             #ps  -aux  顯示進程信息,包括無終端的(x) 和針對用戶(u)的進程:如USER, PID, %CPU, %MEM等,如下圖;

                   Linux-進程管理         

              上圖中: VSZ: Virtual memory SiZe,虛擬內存集,線性內存 
                           RSS: ReSident Size, 常駐內存集 
                           STAT:進程狀態 
                                  R:running                           S: interruptable sleeping 
                                  D: uninterruptable sleeping          T: stopped 
                                  Z: zombie                            +: 前臺進程 
                                  l: 多線程進程                         L:內存分頁并帶鎖 
                                  N:低優先級進程                       <: 高優先級進程 
                                  s: session leader,會話(子進程)發起者

              #ps axo pid ,cmd,%cpu  顯示進程定制的信息;如下圖;

           Linux-進程管理

                     

     進程優先級

                 進程優先級調整: 
                                 靜態優先級:100-139 
                                進程默認啟動時的nice值為0,優先級為120;
                                 只有根用戶才能降低nice值(提高優先性) 
                nice命令: nice [OPTION] [COMMAND [ARG]…]

                    #nice -n 3 top 指定進程的優先級,如下圖:

                   Linux-進程管理

 

                

                  renice命令類似nice命令。

                                  使用這個命令可以改變正在運行的進程優先值。注意,用戶只能改變屬于他們自己的進程的優先 值。

  1.                          #renice 改變指定進程的優先值
  2.                             Linux-進程管理

                                  上圖中初始優先值為0的2121號進程優先值變成了4

          搜索進程
                  最靈活:ps 選項 | grep
                 按預定義的模式:pgrep 
                  pgrep [options] pattern 
                             -u uid: effective user,生效者 
                             -U uid: real user,真正發起運行命令者 
                             -t terminal: 與指定終端相關的進程 
                             -l: 顯示進程名 
                             -a: 顯示完整格式的進程名 
                             -P pid: 顯示指定進程的子進程 
                示例:

                        #pgrep -aU wang 查看真正發起運行命令者的進程
                        #pgrep -at tty2 查看終端上運行的進程 
                         按確切的程序名稱:/sbin/pidof 
                                #pidof bash  顯示運行進程的進程編號
                   

      系統工具

                uptime 
                       顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、10分鐘的平均負載,一般不會超過1)
               系統平均負載: 指在特定時間間隔內運行隊列中的平均進程數 ;
               通常每個CPU內核的當前活動進程數不大于3,那么系統 的性能良好。
               如果每個CPU內核的任務數大于5,那么此主機的性能有嚴重問題。  
               如果linux主機是1個雙核CPU,當Load Average 為6的時候說明機器已經被充分使用。

            top工具: 
                   top:有許多內置命令: 
                          排序: P:以占據的CPU百分比,%CPU 
                                    M:占據內存百分比,%MEM 
                                    T:累積占據CPU時長,TIME+ 
   
               首部信息顯示: 
                            uptime信息:l命令 
                            tasks及cpu信息:t命令 
                            cpu分別顯示:1 (數字) 
                            memory信息:m命令 
              
                          退出命令:q 
                          修改刷新時間間隔:s 
                           終止指定進程:k 
                          存文件:W
  
                 欄位信息簡介 
                          us:用戶空間    sy:內核空間    ni:調整nice時間    id:空閑 
                          wa:等待IO時間  hi:硬中斷      si:軟中斷(模式切換) 
                           st:虛擬機偷走的時間

                  選項: -d #: 指定刷新時間間隔,默認為3秒 
                           -b: 全部顯示所有進程 
                           -n #: 刷新多少次后退出 
                            #top -b -d 10 指定10秒刷新一次 
                            #top -n 3指定刷新3次
   
                   htop命令:需從Fedora-EPEL源安裝 http://172.16.0.1/fedora-epel/7/x86_64 
      
                          選項: -d #: 指定延遲時間;     -u UserName: 僅顯示指定用戶的進程 
                                    -s COLUME: 以指定字段進行排序 
                         子命令: 
                           s: 跟蹤選定進程的系統調用 
                           l: 顯示選定進程打開的文件列表 
                           a:將選定的進程綁定至某指定CPU核心 
                           t: 顯示進程樹
             

         殺進程:

                   kill命令:向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,
                          信號名稱以SIG開頭,不區分大小寫
                          顯示當前系統可用信號:kill -l ,trap -l
                   常用信號:man 7 signal
                          1) SIGHUP: 無須關閉進程而讓其重讀配置文件 
                           2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 
                           3) SIGQUIT:相當于ctrl+\ 
                           9) SIGKILL: 強制殺死正在運行的進程 
                          15) SIGTERM:終止正在運行的進程 
                          18) SIGCONT:繼續運行 
                          19) SIGSTOP:后臺休眠 
   
                  指定信號的方法: 
                              (1) 信號的數字標識:1, 2, 9 
                              (2) 信號完整名稱:SIGHUP 
                              (3) 信號的簡寫名稱:HUP 
          
                   按PID:kill [-SIGNAL]  pid … 
                           kill –n SIGNAL pid;kill –s SIGNAL pid  
                   按名稱:killall [-SIGNAL]  comm…  
                   按模式:pkill [options] pattern 
                          -SIGNAL 
                         -u uid: effective user,生效者 
                         -U uid: real user,真正發起運行命令者 
                         -t terminal: 與指定終端相關的進程 
                         -l: 顯示進程名(pgrep可用)
                        -a: 顯示完整格式的進程名(pgrep可用) 
                        -P pid: 顯示指定進程的子進程
                               #pkill -t pts/3 -9 

     作業管理
                LINUX的作業控制
                   前臺作業:通過終端啟動,且啟動后一直占據終端;
                   后臺作業:可通過終端啟動,但啟動后即轉入后臺運行,釋放終端讓作業運行于后臺
                           (1)運行中的作業:ctrl+z
                            (2) 尚未啟動的作業:#COMMAND &
                   后臺作業雖然被送往后臺運行,但其依然與終端相關;
                   退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端關系
                           #nohup CMD &   #screen;CMD
                   查看當前終端所有作業:#jobs
    
       作業控制:
                 #fg :把指的后臺作業調回前臺
                 #bg :讓送往后臺的作業在后臺繼續運行
                 #kill : 終止指定的作業

        并行運行
               同時運行多個進程,體改效率
                 方法1: vi all.sh
                              f1.sh&   f2.sh&   f3.sh&
                 方法2:
                        (f1.sh&);(f2.sh&);(f3.sh&)
                  方法3;
                        { fi.sh& f2.sh& f3.sh& }
 

原創文章,作者:shenjialong,如若轉載,請注明出處:http://www.www58058.com/79278

(0)
shenjialongshenjialong
上一篇 2017-07-02 21:53
下一篇 2017-07-02 23:40

相關推薦

  • 20161014作業

    2016/10/14作業: ##操作類: 1. 設置自己的終端提示符,要求字符終端登錄時: a> 需要帶顏色 b> 需要顯示當前執行到了第幾條命令 c> 顯示當前登錄終端,主機名和當前時間 2、使用shutdown命令于5分鐘后重啟自己的PC機 3. 學習man,學會使用a> ls遞歸列出/usr目錄下所有文件, b> 列出目錄…

    Linux干貨 2016-10-20
  • 防火墻原理以及iptables重要實踐

    防火墻 主機間通信大致過程: 請求報文由客戶端IP+PORT和服務器端IP+PORT構成。當客戶端網絡地址和服務端地址在同一網段時,不需要經由路由轉發,可以直接到目標服務器,再經由服務器端口請求道所需資源; 當服務器端和客戶端不在同一網段時。目標IP和源IP是不會改變的,會經由互聯網中的路由器,按照其的路由表,指向該路由器的下一跳主機,知道找到服務器端所在網…

    2017-06-18
  • 主流Linux發行版對比

      對服務器來說,沒有最好的Linux發行版。一切都取決于企業的實際需求。 如今Linux已不再只是一款自由操作系統,它還承載了許多企業的核心應用。在對比流行的Linux發行版時,不僅要考慮有吸引力的功能集,還要關注系統的支持與服務。 服務器管理員擔心操作系統的維護和支持周期。維護生命周期指的是Linux發行版持續提供產品補丁和更新的時間。支持方面…

    Linux干貨 2016-10-31
  • linux學習筆記: shell腳本編程相關(上)

    前言 unix/linux操作系統下的shell,是一種殼,其目的是提供一個用戶與計算機相互交互的命令接口,通過輸入各種命令,達到操作的目的。 與此同時,shell支持控制流程,進而可以組合出各種各樣的應用實例。 shell腳本的格式  首行shebang機制:  bash腳本,首行添加#!/bin/bash&nbsp…

    Linux干貨 2017-04-18
  • 計算機的組成及其功能

    1.計算機的組成及其功能 1.1計算機的硬件基本結構 從ENIAC到當前最先進的計算機都采用的是馮·諾依曼體系結構分別是:控制器,運算器,存儲器,輸入與輸出設備 控制器:將指令逐條從存儲器中取出,經譯碼分析后向全機發出相應         的操作控制信號作用于其他部件,使各部件有…

    Linux干貨 2016-10-28
  • xen虛擬化基礎篇

    Xen介紹:  xen是一個開放的源代碼虛擬機監視器,有劍橋大學研發。它打算在單個計算機上運行多達128個滿足特征的操作系統,操作系統必須進行顯示地修改("移植")以在Xen上運行(但是提供對用戶應用的兼容性)。這使得無需特殊硬件支持,就能達到高性能的虛擬化。 Xen由三部分組成:     第一部分…

    Linux干貨 2015-08-26
欧美性久久久久