咱們回顧一下所講述的內容,在Linux的內核的功能中,進程管理是一個在內核中基本的功能,而在進程管理中,最重要的功能就是進程調度,之因此有進程調度是由於在多任務的操做系統上,進程數是要多於CPU的核心數的,因此只能將進程輪流運行在CPU上,將CPU的運行劃分紅多個時間片,以時間片爲單位去輪流運行進程,不過這樣一來致使運行沒有運行完就會被其它進程替換,爲了保證被替換時可以保留當前一刻狀態,因此被替換時要進行保護現場,目的爲了是當又輪到該進程時,能夠進行恢復現場,將該進程的狀態信息可以進行還原,那麼保存現場的進程的狀態信息被放置在CPU的寄存器上,等待再次進行調度,將寄存器所保存的進程狀態信息進行還原。而每個進程都保留在task struct
任務結構列表當中所描述的數據結構。內核爲了可以追蹤每一個任務,它靠諸多的task struct
,所以諸多的task struct
造成了任務列表task list
。服務器
回顧:Linux OS的基礎概念、進程查看等工具; 內核的功能:進程管理(進程調度) 進程調度:保存現場,恢復現場; task struct:任務結構; task list:任務列表;
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
做爲程序包來說,CentOS系統不容許由兩個遠程終端使用同一個yum
命令,由於在安裝時,必須保證程序包的一致性和完整性。
對於htop而言,是能夠支持鼠標操做的,若是點擊HELP的話,就會出現如下幫助界面。app
那麼該命令的選項爲:socket
選項: -d #:指定延遲時間間隔; -u UserName:僅顯示指定用戶的進程; -s COLUME:以指定字段進行排序; 子命令: l:顯示選定的進程打開的文件列表; s:跟蹤選定的進程的系統調用; t:以層級關係顯示各進程狀態; a:將選定的進程綁定至某指定的CPU核心;
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:顯示內存統計數據;
pmap命令用起來並不複雜,用來顯示及報告內存的進程映射表,進程映射表就是任何一個進程所使用的內存空間看上去是連續的,但這些內存頁會被放置在不連續的物理內存空間中,那麼該命令就是顯示內存信息。
那麼該命令的使用格式爲:
pmap [options] PID [PID ...] -x:顯示詳細格式的信息; 另外一種查看方式:cat /proc/PID/maps
glannes命令也是最近出現的一款管理進程的工具,由Python
語言發言其功能很是強大的命令,並且支持C/S架構模式,遠程查看。
對於該命令來說,有許多的內建子命令,但能夠省略,而使用選項也不少,咱們簡單的介紹一些經常使用選項來舉例說明。
內建命令: 使用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:遠程服務器地址;
dstat
命令也是新晉出現的一款工具,並且已經收入到base源中,該命令的功能很是強大,它是一種很是精巧的查看系統使用率的一款命令工具,這款工具幾乎柔和了咱們以前所學到那幾款命令工具的功能,那麼該命令的使用格式爲:
dstat [-afv] [options...] [delay [count]]
默認輸入dstat
命令的界面爲:
當咱們不給任何選項時,默認的選項爲-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:延遲最大的進程;
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:
當有許多進程一一處理很麻煩時,須要斬草除根時,必要時殺人滅口是很是關鍵的一個手段,正所謂好人作到低,使用killall
命令能夠作到這一點,該命令的用法也很容易理解。與kill
命令不一樣是,killall
命令是根據進程名直接殺死進程,而不用指定PID
。
killall命令: killall [-SINGAL] program