2018-5-28進程工具命令管理

  咱們回顧一下所講述的內容,在Linux的內核的功能中,進程管理是一個在內核中基本的功能,而在進程管理中,最重要的功能就是進程調度,之因此有進程調度是由於在多任務的操做系統上,進程數是要多於CPU的核心數的,因此只能將進程輪流運行在CPU上,將CPU的運行劃分紅多個時間片,以時間片爲單位去輪流運行進程,不過這樣一來致使運行沒有運行完就會被其它進程替換,爲了保證被替換時可以保留當前一刻狀態,因此被替換時要進行保護現場,目的爲了是當又輪到該進程時,能夠進行恢復現場,將該進程的狀態信息可以進行還原,那麼保存現場的進程的狀態信息被放置在CPU的寄存器上,等待再次進行調度,將寄存器所保存的進程狀態信息進行還原。而每個進程都保留在task struct任務結構列表當中所描述的數據結構。內核爲了可以追蹤每一個任務,它靠諸多的task struct,所以諸多的task struct造成了任務列表task list服務器

回顧:Linux OS的基礎概念、進程查看等工具;
    
    內核的功能:進程管理(進程調度)
        進程調度:保存現場,恢復現場;
            task struct:任務結構;
            task list:任務列表;

1、Linux進程及做業管理(2)

1.1 htop命令

htop是一個top的升級版,擁有更多的功能以及更加友好的方式對用戶進行顯示,使用起來也很是的方便,可是這須要額外安裝,該軟件在epel源中。若是沒有epel源的話,則須要添加。微信

# yum info htop
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Available Packages
Name        : htop
Arch        : x86_64
Version     : 2.1.0
Release     : 1.el7
Size        : 102 k
Repo        : aliyun-epel
Summary     : Interactive process viewer
URL         : http://hisham.hm/htop/
License     : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
            : top(1).

看的出來屬於epel源,咱們進行安裝。數據結構

# yum -y install htop

安裝完成以後,咱們直接輸入htop命令。架構

# htop

微信截圖_20180528150753.png

  做爲程序包來說,CentOS系統不容許由兩個遠程終端使用同一個yum命令,由於在安裝時,必須保證程序包的一致性和完整性。
  對於htop而言,是能夠支持鼠標操做的,若是點擊HELP的話,就會出現如下幫助界面。
app

微信截圖_20180528152532.png

  那麼該命令的選項爲:socket

    選項:
        -d #:指定延遲時間間隔;
        -u UserName:僅顯示指定用戶的進程;
        -s COLUME:以指定字段進行排序;
        
    子命令:
        l:顯示選定的進程打開的文件列表;
        s:跟蹤選定的進程的系統調用;
        t:以層級關係顯示各進程狀態;
        a:將選定的進程綁定至某指定的CPU核心;

1.2 vmstat命令

  vmstat命令是統計並報告虛擬的內存數據的,默認顯示一行數據,delay和count就是指定每隔多長時間顯示多少次,然後自動退出,那麼對於該命令的格式爲:tcp

    vmstat [options] [delay [count]]

  例如:delay每隔3秒鐘count顯示3次。ide

# vmstat 3 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 434820   2084 375648    0    0    46    10   89  263  1  1 98  0  0
 0  0      0 434820   2084 375680    0    0     0     1   83   85  0  0 100  0  0
 0  0      0 434572   2084 375680    0    0     0     0  100   94  0  1 98  0  0

  對於以上的字段來講,咱們來一一進行解釋而且理解與讀懂,第一個就是procs,該字段爲processes的簡寫。工具

    procs:
        r:等待運行的進程的個數;CPU上等待運行的任務隊列長度;
        b:處於不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度;

  那麼第二列爲顯示memory信息,在內存段中的一下的解釋信息爲:spa

    memory:
        swpd:交換內存使用總量;
        free:空閒的物理內存總量;
        buffer:用於buffer的內存總量;
        cache:用於cache的內存總量;

  第三列爲swap列信息,爲交換分區的速率信息,表示每秒鐘多少個,在這裏取出的爲平均值,在這一段中的解釋信息具體以下:

    swap:
        si:數據進入swap中的數據速率(kb/s);
        so:數據離開swap的速率(kb/s);

  第四列爲io信息,在這個字段下有bi和bo,解釋信息以下:

    io:
        bi:從塊設備讀入數據到系統的速度(kb/s);
        bo:保存到數據至塊設備的速率(kb/s);

  第五列爲system,爲系統的某些處理操做,當用戶模式轉換爲內核模式時,也是會發生中斷的,只不過系統調用是經過軟中斷的方式來決定的,包含的信息分別爲:

    system:
        in:interrupts,中斷速率;
        cs:context switch,上下文切換的速率;

  最後一列爲CPU的信息,在這個信息中字段不少,那麼這些字段分別解釋爲:

    cpu:
        us:user space
        sy:system
        id:idle
        wa:wait
        st:stolen

  該命令的選項爲:

    選項:
        -s:顯示內存統計數據;

1.3 pmap命令

  pmap命令用起來並不複雜,用來顯示及報告內存的進程映射表,進程映射表就是任何一個進程所使用的內存空間看上去是連續的,但這些內存頁會被放置在不連續的物理內存空間中,那麼該命令就是顯示內存信息。

  那麼該命令的使用格式爲:

    pmap [options] PID [PID ...]
        -x:顯示詳細格式的信息;
        
    另外一種查看方式:cat /proc/PID/maps

1.4 glances命令

  glannes命令也是最近出現的一款管理進程的工具,由Python語言發言其功能很是強大的命令,並且支持C/S架構模式,遠程查看。
微信截圖_20180528191316.png

  對於該命令來說,有許多的內建子命令,但能夠省略,而使用選項也不少,咱們簡單的介紹一些經常使用選項來舉例說明。

    內建命令:
        使用h鍵來進行獲取;
        
    經常使用選項:
        -b:以bytes爲單位顯示網上速率;
        -d:關閉磁盤I/O模塊;
        -m:關閉mount模塊;
        -n:關閉network模塊;
        -t#:刷新時間間隔;
        -l:每一個CPU的相關數據單獨顯示;
        --export-csv FILENAME.csv:輸出格式;
        -f /PATH/TO/SOMEDIR:設定輸出文件的位置;

  接下來咱們使用C/S模式下運行glances。那麼說明由客戶端遠程鏈接服務端,在服務模式中指明選項爲-s-B,後面跟上其IP地址,而IP地址的指向就是本機的某地址,其做用用於監聽。

C/S模式下運行glances命令:
    服務模式:
        glances -s -B IPADDR
        
        IPADDR:本機的某地址,用於監聽;

  而客戶端模式咱們使用-c選項,後面跟上服務端的IP地址。

    客戶端模式:
        glances -c IPADDR
        
        IPADDR:遠程服務器地址;

1.5 dstat命令

  dstat命令也是新晉出現的一款工具,並且已經收入到base源中,該命令的功能很是強大,它是一種很是精巧的查看系統使用率的一款命令工具,這款工具幾乎柔和了咱們以前所學到那幾款命令工具的功能,那麼該命令的使用格式爲:

    dstat [-afv] [options...] [delay [count]]

默認輸入dstat命令的界面爲:

微信截圖_20180528203623.png

  當咱們不給任何選項時,默認的選項爲-cdngy,那麼咱們總結一下其經常使用選項:

    經常使用選項:
        -c, --cpu:顯示CPU相關的信息;
            -c #,#,...,total
        -d, --disk:顯示磁盤相關的信息;
            -D sda,sdb,...total
        -g:顯示page相關的信息;
        -m:Memory的相關統計數據;
        -n:Interface的相關統計數據;
        -p:顯示process的相關統計數據;
        -r:顯示io 請求的相關統計數據;
        -s:顯示swapped的相關統計數據;
        
        --tcp:
        --udp:
        --raw:
        --socket:
        
        --ipc:
        
        --top-cpu:顯示最佔用CPU的進程;
        --top-io:最佔用io的進程;
        --top-men:最佔用內存的進程;
        --top-lantency:延遲最大的進程;

1.6 kill命令

  kill命令顧名思義,就是殺死,其實真正的意義爲向進程發送信號的,也可終止某一個進程。

kill命令:
    kill - terminate a process
    
    用於向進程發送信號,以實現對進程的管理;

  咱們可使用-l選項來顯示當前系統上可用的信號類型,須要注意的是,只有管理員纔有權限可以kill掉進程。

    顯示當前系統可用信號:
        kill -l [signal]
        
        每一個信號的標識方法有三種:
            (1) 信號的數字標識;
            (2) 信號的完整名稱;
            (3) 信號的簡要名稱;

  那麼咱們向進程發送信號,可使用-s選項,也能夠不使用就能夠直接跟上其可用數字信號就能夠。

    向進程發送信號:
        kill [-s signal|-SIGNAL] pid...

  在平時的操做中,咱們經常使用的信號有:

    經常使用信號:
        1) SIGHUP:無須關閉進程而讓其重讀配置文件;
        2) SIGINT:終止正在運行的進程,至關於Ctrl+c;
        9) SIGKILL:殺死運行中的進程;
        15) SIGTERM:終止運行中的進程;
        18) SIGOUT:
        19) SIGSTOP:

1.7 killall命令

  當有許多進程一一處理很麻煩時,須要斬草除根時,必要時殺人滅口是很是關鍵的一個手段,正所謂好人作到低,使用killall命令能夠作到這一點,該命令的用法也很容易理解。與kill命令不一樣是,killall命令是根據進程名直接殺死進程,而不用指定PID

killall命令:
    killall [-SINGAL] program
相關文章
相關標籤/搜索