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
下一篇 2017-07-02

相關推薦

  • Linux終端類型介紹

    相關命令:tty 適合閱讀人群:所有   終端機 終端(Computer terminal),是一臺電子計算機或者計算機系統,用來讓用戶輸入數據,及顯示其計算結果的機器。又名終端機,它與一部獨立的電腦不同,其實就是一種輸入輸出設備,一臺電腦多人使用,每增加一個用戶只須增加一臺顯示器和一套鍵盤鼠標就可以成為一個獨立的終端,多用戶可同時使用互相獨立,跟…

    Linux干貨 2016-10-14
  • 正則表達式及其用法

    正則表達式及其用法 1.   什么是正則表達式 正則表達式是Global search REgular expression and Print out the line的縮寫。是一類用字符所書寫的模式,其中許多字符并不表示其字面意義,而是表達控制或通配等功能。 在Linux中,用正則表達式搜索文本的常用命令: grep: 使用基本正則表…

    Linux干貨 2015-09-14
  • 自定義命令提示符

     命令提示符的格式放在變量PS1中         命令提示符特殊字符定義             \u  當前用戶      &…

    Linux干貨 2017-05-02
  • 用戶組和權限管理相關作業

    1創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser     [root@ali ~]# useradd -u 1234 -g bin -G root,ftp -s /bin/csh -d /testdir/test…

    Linux干貨 2016-08-02
  • 基于mysql數據庫的日志分析系統

    現如今,日志已經成為了我們分析系統及相關服務的一個重要工具。而日志也具有其相對較為固定的格式以便于進行統計查詢。其大致格式如下: 日期時間            主機      &…

    Linux干貨 2016-10-23
  • 5、腳本初步,正則表達式

    http://note.youdao.com/yws/public/redirect/share?id=35435e3a02f23513e5c83601372fff9b&type=false

    Linux干貨 2016-08-08
欧美性久久久久