目錄:
(一)htop命令
(二)vmstat命令
(三)pmap命令
(四)glances命令
(五)dstat命令html
(一)htop命令
(1.1)EPEL(Extra Packages for Enterprise Linux)是由Fedora社區打造,爲RHEL及衍生髮行版如CentOS等提供高質量軟件包的項目。裝上了EPEL,就像在Fedora上同樣,能夠經過yum install的方式安裝,便可安裝不少之前須要編譯安裝的軟件、經常使用的軟件或一些比較流行的軟件,好比如今流行的nginx、htop、ncdu、vnstat等等,均可以使用EPEL很方便的安裝更新。
(1.2)在管理進程時一般要藉助一些工具,比較經常使用的就是ps和top了,不過CentOS還爲咱們提供了一個更增強大的工具htop,htop是一個Linux下的交互式的進程瀏覽器,能夠用來替換Linux下的top命令。咱們使用CentOS 7系統,並經過aliyun下載epel源,按照以下的操做方式進行。
# cd /etc/yum.repos.d/---進入到/etc/yum.repos.d/目錄
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup---將CentOS-Base.repo重命名爲CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ---下載Centos-7.repo的源
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/epel-7.repo ---下載epel-7的源
注意:咱們也可使用163的源https://mirrors.163.com/.help/ ,或者直接經過官方源安裝:# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
(1.3)而後將緩存清理一下,並從新創建緩存。此時咱們經過「# yum repolist」能夠查看當前系統的YUM源的狀況。
# yum clean all---將緩存清理一下
# yum makecache---從新創建緩存
# yum repolist---查看當前系統的YUM源的狀況
(1.4)CPU在實現查看其分配和利用率的過程當中主要有以下的一些關鍵指標:其中第一個us表示用戶空間佔用CPU百分比,第二個sy表示的是內核空間佔用CPU百分比,第三個ni表示的是用戶進程空間內改變過優先級的進程佔用CPU百分比,第四個id表示的是空閒CPU百分比,第五個hi表示的是硬件中斷百分比,第六個si表示的是軟件中斷百分比,第七個cs表示處理上下文切換百分比,第八個st表示的是被虛擬化分走所佔用的百分比,第九個wa表示的是等待輸入輸出的CPU時間百分比。
對於內存Memory衡量的關鍵指標主要有:第一個VSZ表示虛擬內存集,第二個RSS表示常駐內存集,第三個SHM表示共享內存集。
(1.5)接着咱們在系統中安裝htop軟件包。
(1.6)咱們在命令行輸入「# htop」直接打開進入到一個瀏覽器的界面,在圖中將輸出的界面劃分紅了四個區域,其中上左區:顯示了每顆CPU、物理內存和交換分區的信息;上右區:顯示了任務數量、線程數量、平均負載和鏈接運行時間等信息;進程區域:顯示出當前系統中的全部進程;操做提示區:顯示了當前界面中F1至F10功能鍵中定義的快捷功能。
# htop
(1.7)界面支持鼠標操做,咱們在鍵盤上按F1或者在屏幕上進行點擊,能夠顯示幫助信息,其中CPU usage bar即CPU顯示當中low-priority表示低優先級,normal表示正常,kernel表示內核的,virtualiz表示被虛擬化拿走的時間。而Memory bar中綠色used表示使用的內存,紫色buffers表示緩衝,橙色cache表示緩存。Status狀態部分中:R表示運行,S表示睡眠,T表示被跟蹤或者中止狀態,Z表示殭屍態,D表示不可中斷的睡眠。
(1.8)其中在htop主界面中咱們可使用以下的按鍵進行操做
按鍵u:顯示指定用戶的進程
按鍵q:退出,能夠最後退出htop程序
按鍵Esc:退回到前一步
按鍵H:隱藏用戶線程
按鍵K:隱藏內核線程
按鍵F:跟蹤光標所在的線程
按鍵M:按照內存使用百分比排序,對應MEM%列
按鍵P:按照CPU使用百分比排序,對應CPU%列
按鍵T:按照進程運行的時間排序,對應TIME+列
按鍵c:可以標記處一個進程以及這個進程的子進程來
按鍵a:可以設置CPU的親和性
按鍵U:取消全部選中的進程
按鍵l:可以顯示光標所在進程的文件列表(小寫字母L)
按鍵s:顯示光標所在進程執行的全部系統調用,按F8鍵能夠自動滾屏刷新當前系統新生成的系統調用。
按鍵T或者F5鍵:能夠以進程樹的形式展示出各進程之間的父子關係。
按鍵F2:配置界面中的顯示信息
(1.9)htop命令的選項參數以下:
# htop -d 2---設置刷新時間,單位爲秒
# htop -u root---顯示指定用戶的進程
# htop -s TIME---以指定的列排序
# htop -C---設置界面爲無顏色node
(二)vmstat命令
(2.1)vmstat命令是用來報告虛擬內存的統計數據的,vmstat命令報告關於內核線程、虛擬內存、磁盤、陷阱和CPU活動的統計信息。由vmstat命令生成的報告能夠用於平衡系統負載活動,系統範圍內的這些統計信息都計算出以百分比表示的平均值,或者計算其總和。
(2.2)咱們執行vmstat命令後會發現產生了五列的內容,主要包括procs進程,memory內存,swap交換分區,io爲塊級別的io,system系統包括中斷和上下文切換,cpu主要包括用戶空間、內核空間、空閒百分比、等待輸入輸出百分比、被虛擬化分走的百分比。
(2.3)若是咱們但願當前的輸出數據可以每2秒動態輸出一次,此時咱們可使用「# vmstat 2」命令。而若是咱們但願輸出數據可以每2秒動態輸出一次,而且總共顯示3次,此時咱們可使用「# vmstat 2 3」
# vmstat 2---輸出數據可以每2秒動態輸出一次
# vmstat 2 3---輸出數據可以每2秒動態輸出一次,而且總共顯示3次
(2.4)每一列的詳細含義
(2.4.1)procs進程,若是這個隊列很是長,那麼等待io的時間很長,io的能力有限。
r:等待運行的進程的個數;CPU上等待運行的任務隊列的長度
b:處於不可中斷睡眠態的進程個數;被阻塞的任務隊列的長度
(2.4.2)memory內存
swap:交換內存使用量,0表示沒有啓用交換內存,實際使用的是硬盤容量
free:空閒的物理內存總量
buffer:用於buffer的內存總量
cache:用於cache的內存總量
(2.4.3)swap交換分區,若是咱們發現系統有大量的交換分區的使用換進,可是換出的頻率不是很頻繁那麼對咱們系統的影響還不是很大,可是若是咱們大量的交換分區在換進換出操做,即si與so之間活動的速率很是頻繁,這也就意味着咱們的物理內存過小,須要擴充內存。
si:數據進入swap中的數據速率(kb/s)
so:數據離開swap的速率(kb/s)
(2.4.4)io
bi:從塊設備讀入數據到系統的速度(kb/s)
bo:保存數據至塊設備的速率(kb/s)
(2.4.5)system
in:interrupts,中斷速率
cs:context switch,上下文切換的速率,若是上下文切換的速率過高說明須要運行的進程太多,CPU的性能太弱
(2.4.6)CPU
us:user space,用戶空間
sy:system,內核空間
id:idle,空閒CPU百分比
wa:wait,等待輸入輸出的CPU時間百分比
st:stolen,被虛擬化分走所佔用的百分比
(2.5)若是咱們須要顯示內存統計數據
# vmstat -s
(2.6)若是咱們但願將執行的5行結果保存到test文件中,咱們可使用以下的方式操做。
# vmstat 5 >> test &python
(三)pmap命令
(3.1)pmap命令用於報告進程的內存映射關係,是Linux調試及運維的一個很好的工具。命令的語法爲「pmap (選項) (參數)」,其中參數通常有以下的種類:
-x:顯示擴展格式
-d:顯示設備格式
-q:不顯示頭尾行
-V:顯示指定版本
(3.2)咱們若是想要查看1號systemd進程的內存映射關係,能夠按照以下的方式操做。其中anon表示的是匿名頁,stack表示的棧。
# pmap 1---顯示systemd進程的內存映射關係
(3.3)若是咱們須要顯示更詳細的信息,可使用-x的參數,其中多出來了3列數據,其中RSS表示長度內存集,Dirty表示的是髒數據。固然咱們也能夠經過查看內核的信息方式實現詳細信息的提取,
# pmap -x 1---顯示詳細格式信息
# cat /proc/1/maps---經過內核查看詳細內存映射信息ios
(四)glances命令
(4.1)glances工具能夠在用戶的終端上實時顯示重要的系統信息,並動態地對其進行更新。這個高效的工具能夠工做於任何終端屏幕。另外它並不會消耗大量的CPU資源,一般低於百分之二。glances在屏幕上對數據進行顯示,而且每隔兩秒鐘對其進行更新。你也能夠本身將這個時間間隔更改成更長或更短的數值,glances工具還能夠捕獲到一個文件,便於之後對報告進行分析和繪製圖形,輸出文件能夠是電子表格的格式(.csv)或者html格式。
(4.2)咱們首先將glances命令安裝起來。
# yum install glances -y
(4.3)咱們運行glances命令後發現,其中系統中第1個表示的是CPU的相關參數,第2個表示的是內存相關的參數信息,第3個表示的是交換分區的參數信息,第4個表示的是系統在一分鐘、五分鐘、十五分鐘的平均負載狀況,第5個表示的是網絡的相關交換速率,其中Rx表示接收的,Tx表示發送的,第6個表示的是磁盤的讀寫速率信息,第7個表示的是掛載的文件系統,其中Used表示的是醫用的空間大小,Total表示總的空間大小,其中第8箇中VIRT標示的是虛擬內存集、RES表示的是常駐內存集、NI表示nice值、S表示的是狀態、「TIME+」表示的是累計時間、IOR/s表示的io讀每秒的速率、IOW/s表示的是io寫每秒的速率、Command表示的是進程名稱
(4.4)咱們須要瞭解glances命令的幫助信息,咱們可使用按鍵h獲取幫助
(4.5)glances經常使用選項
-b:以Byte爲單位顯示網上數據速率
-d:關閉磁盤I/O模塊
-m:關閉mount模塊
-n:關閉network模塊
-C file:設置配置文件默認是/etc/glances/glances.conf
-e:顯示傳感器溫度
-p PORT:設置運行端口默認是61209
-P password:設置客戶端/服務器密碼
-t sec:設置屏幕刷新的時間間隔,單位爲秒,默認值爲2秒,數值許可範圍:1~32767
-s:設置glances運行模式爲服務器
-h:顯示幫助信息
-v:顯示版本信息
# glances -1---表示每一個CPU都單獨顯示出來
(4.6)若是咱們但願將輸出的文本信息保存到一個咱們指定的文件中,則可使用以下的操做方式,咱們須要先安裝python-jinja2軟件包,而後在指定glances將輸出的文本指定到對應的文件中。
# yum install python-jinja2 -y---安裝python-jinja2軟件包
# glances -f /tmp/ -o HTML---指定glances會輸出到/tmp/目錄下html格式的文件
# glances -f /tmp/ --export-csv CSV---指定glances會輸出到/tmp/目錄下csv格式的文件
# yum whatprovides */libreoffice---安裝libreoffice的calc工具
# libreoffice --calc %U /tmp/CSV---使用libreoffice的calc工具打開csv格式文件
(4.7)咱們還可使用C/S模式運行glances命令,其中服務端模式爲「glances -s -B IPADDR」,其中IPADDR爲本機的某地址用於監聽(圖3-9),而在客戶端模式爲「glances -c IPADDR」,其中IPADDR是遠程服務器的地址(圖3-10)。咱們在vms001主機上鍊接CentOS 7主機後,發現能夠正常的顯示CentOS 7主機上的glances信息。
# glances -s -B 192.168.26.131---在CentOS 7服務器端主機上執行
# glances -c 192.168.26.131---在vms001客戶端主機上執行nginx
(五)dstat命令
(5.1)dstat是一個能夠取代vmstat、iostat、netstat和ifstat這些命令的多功能產品。dstat克服了這些命令的侷限並增長了一些額外的功能,增長了監控項,也變得更靈活了。dstat能夠很方便監控系統運行情況並用於基準測試和排除故障,dstat可讓你實時的看到全部系統資源,例如,你可以經過統計IDE控制器當前狀態來比較磁盤利用率,或者直接經過網絡帶寬數值來比較磁盤的吞吐率(在相同的時間間隔內)。dstat將以列表的形式爲你提供選項信息並清晰地告訴你是在何種幅度和單位顯示輸出,這樣更好地避免了信息混亂和誤報。更重要的是,它可讓你更容易編寫插件來收集你想要的數據信息,以從未有過的方式進行擴展。dstat的默認輸出是專門爲人們實時查看而設計的,不過你也能夠將詳細信息經過CSV輸出到一個文件,並導入到Excel生成表格。
(5.2)咱們打開dstat命令後,會以動態的效果一直在屏幕上滾動刷新。若是咱們但願每隔兩秒顯示一個批次,一共顯示五次,則可使用下面的方式進行顯示。默認狀況下dstat的參數自動含有「-cdngy」的參數,分別表示的是「total-cpu-usage」、「dsk/total」、「net/total」、「paging」、「system」。
# dstat 2 5
(5.3)其中第一個「total-cpu-usage」表示CPU狀態,CPU的使用率,這項報告更有趣的部分是顯示了用戶、系統和空閒部分,這更好的分析了CPU當前的使用情況。若是你看到「wait」一欄中,CPU的狀態是一個高使用率值,那說明系統存在一些其它問題。當CPU的狀態處於「waits」時,那是由於它正在等待I/O設備(例如內存,磁盤或者網絡)的響應並且尚未收到。第二個「dsk/total」表示的是磁盤統計,磁盤的讀寫操做,這一欄顯示磁盤的讀、寫總數。第三個「net/total」表示的是網絡統計,網絡設備發送和接收的數據,這一欄顯示的網絡收、發數據總數。第四個「paging」表示分頁統計,系統的分頁活動,分頁指的是一種內存管理技術用於查找系統場景,一個較大的分頁代表系統正在使用大量的交換空間,或者說內存很是分散,大多數狀況下你都但願看到page in和page out的值是0。第五個「system」這一項顯示的是中斷(int)和上下文切換(csw)。這項統計僅在有比較極限時纔有意義,這一欄中較高的統計值一般表示大量的進程形成擁塞,須要對CPU進行關注,你的服務器通常狀況下都會運行一些程序,因此這項老是顯示一些數值。
(5.4)dstat命令可跟的經常使用選項:
-c,--cpu:顯示cpu相關信息
# dstat -C 1---顯示1號cpu的信息
# dstat -C total---顯示全部cpu的信息
-d,--disk:顯示磁盤的相關信息
# dstat -D total---顯示系統總的磁盤信息
-g:顯示page相關的速率數據
-m:Memory的相關統計數據
-n:Interface的相關統計數據
-p:顯示process的相關統計數據
-r:顯示io請求的相關的統計數據
-s:顯示swapped的相關統計數據
-l:顯示負載統計量
-t:將當前時間顯示在第一行
--tcp:顯示tcp狀態的統計數據
--udp:顯示udp狀態的統計數據
--socket:顯示網絡統計數據
--ipc:進程間通訊的相關數據
--top-cpu:顯示最佔用CPU的進程
--top-mem:顯示最佔用內存的進程
--top-lantency:顯示延遲最大的進程
--fs:顯示文件系通通計數據(包括文件總數量和inodes值)
--nocolor:不現實顏色(有時候會用)
--disk-util:顯示某一時間磁盤的忙碌情況
--freespace:顯示當前磁盤空間使用率
--proc-count:顯示正在運行的程序數量
--top-bio:指出塊I/O最大的進程
--top-cpu:圖形化顯示CPU佔用最大的進程
--top-io:顯示正常I/O最大的進程
--top-mem:顯示佔用最多內存的進程
(5.5)示例:查看所有內存都有誰在佔用
# dstat -g -l -m -s --top-mem
(5.6)示例:顯示一些關於CPU資源損耗的數據
# dstat -c -y -l --proc-count --top-cpu瀏覽器
—————— 本文至此結束,感謝閱讀 ——————緩存