Linux系統管理工具-vmstat、top、sar、nload、w命令

第十章 Linux平常運維管理

10.1 查看系統負載

w命令

w命令用於顯示已經登錄系統的用戶列表,並顯示用戶正在執行的指令。執行這個命令可得知目前登入系統的用戶有那些人,以及他們正在執行的程序。單獨執行w命令會顯示全部的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。shell

  • 查看系統負載(w)
[root@1 ~]# w
 11:17:30 up 13 min,  2 users,  load average: 0.00, 0.04, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      11:04   13:06   0.05s  0.05s -bash
root     pts/0    192.168.8.1      11:05    2.00s  0.02s  0.00s w

解析: 第一行從左邊開始顯示的信息依次是:時間,系統運行時間,登陸用戶數,平均負載(1min平均負載、5min平均負載、15min平均負載)。
load average:平均負載,即單位時間內CPU活動進程數,這個值越大說明服務器壓力越大,通常該值不超過cpu數量就能夠。數據庫

  • 查看服務器CPU數量(/proc/cpuinfo)
[root@1 ~]# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping	: 9
microcode	: 0x12
cpu MHz		: 2493.938
cache size	: 3072 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase smep xsaveopt
bogomips	: 4988.79
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

說明: 在此,professor即爲系統CPU數量。ubuntu

uptime命令

uptime命令可以打印系統總共運行了多長時間和系統的平均負載。uptime命令能夠顯示的信息顯示依次爲:如今時間、系統已經運行了多長時間、目前有多少登錄用戶、系統在過去的1分鐘、5分鐘和15分鐘內的平均負載。api

[root@1 ~]# uptime
 17:22:58 up  6:18,  2 users,  load average: 0.00, 0.01, 0.05

注: uptime獲得的信息和w第一行結果是同樣的。緩存

tty解析

TTY設備包括虛擬控制檯,串口以及僞終端設備。bash

在Linux系統的設備特殊文件目錄/dev/下,終端特殊設備文件通常有如下幾種:服務器

  • 串行端口
    串行端口終端(Serial Port Terminal)是使用計算機串行端口鏈接的終端設備。計算機把每一個串行端口都看做是一個字符設備。這些串行端口所對應的設備名稱是: /dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,設備號分別是(4,0),(4,1)等,分別對應於DOS系統下的COM一、COM2等。網絡

  • 僞終端
    僞終端(Pseudo Terminal)是成對的邏輯終端設備(即master和slave設備,對master的操做會反映到slave上)。運維

  • 控制終端
    若是當前進程有控制終端(Controlling Terminal)的話,那麼/dev/tty就是當前進程的控制終端的設備特殊文件。可使用命令」ps –ax」來查看進程與哪一個控制終端相連。對於你登陸的shell,/dev/tty就是你使用的終端,設備號是(5,0)。使用命令」tty」能夠查看它具體對應哪一個實際終端設備。/dev/tty有些相似於到實際所使用終端設備的一個聯接。工具

  • 控制檯
    在Linux 系統中,計算機顯示器一般被稱爲控制檯終端(Console)。它仿真了類型爲Linux的一種終端(TERM=Linux),而且有一些設備特殊文件與之相關聯:tty0、tty一、tty2 等。當你在控制檯上登陸時,使用的是tty1。使用Alt+[F1—F6]組合鍵時,咱們就能夠切換到tty二、tty3等上面去。tty1–tty6等稱爲虛擬終端,而tty0則是當前所使用虛擬終端的一個別名,系統所產生的信息會發送到該終端上(這時也叫控制檯終端)。所以無論當前正在使用哪一個虛擬終端,系統信息都會發送到控制檯終端上。/dev/console即控制檯,是與操做系統交互的設備,系統將一些信息直接輸出到控制檯上。只有在單用戶模式下,才容許用戶登陸控制檯。

  • 虛擬終端
    在Xwindow模式下的僞終端.如在Kubuntu下用konsole,就是用的虛擬終端,用tty命令可看到/dev/pts/name, name爲當前用戶名。

10.2 vmstat命令

vmstat命令的含義爲顯示虛擬內存狀態(「Viryual Memor Statics」),它能夠報告關於進程、內存、I/O等系統總體運行狀態。

vmwstat用法

語法:

  • vmstat
    意思是靜態顯示內存狀態一次。
[root@1 ~]# vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 755756    876 138904    0    0     3     0   26   40  0  0 100  0  0
  • vmstat [n] 在此n表明數字
    意思是以n秒每次的頻率動態顯示內存狀態(按Ctrl+c結束命令)。
[root@1 ~]# vmstat 1
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 755756    876 138936    0    0     3     0   26   40  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   29   41  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   25   30  0  0 100  0  0
 0  0      0 755740    876 138936    0    0     0     0   30   39  0  1 99  0  0
 0  0      0 755740    876 138936    0    0     0     0   24   34  0  0 100  0  0
^C
  • vmstat [n] [m]
    意思是每n秒顯示一次,顯示m次後命令結束!
[root@1 ~]# vmstat 1 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 755756    876 138936    0    0     3     0   26   40  0  0 100  0  0
 0  0      0 755616    876 138936    0    0     0     0   31   42  0  0 100  0  0
 0  0      0 755616    876 138936    0    0     0     0   34   45  0  0 100  0  0
[root@adai003 ~]#

說明:

  • proc 顯示進程相關信息
    • r:=run,表示運行中或等待cpu運行的進程數,若是該數長期大於服務器CPU個數,則說明CPU不夠用了。
    • b:表示等待資源的進程數,如,等待I/O,內存等,這列的值若是長時間大於1,則須要關注一下。
  • memory 內存相關信息
    • swpd:表示切換到交換分區的內存量(當該數據不斷變化時說明內存不足)
    • free:表示當前空閒的內存量
    • buff:緩衝大小
    • cache:緩存大小
  • swap 內存交換狀況
    • si:=storage in,表示交換區寫入到內存的數據量
    • so:=storage out,表示由內存寫入到交換區的數據量
  • io 磁盤使用狀況
    • bi:=block in,表示從塊設備讀取數據(寫入內存)的量(即:讀磁盤)
    • bo:=block out,表示(從內存讀取)寫入到塊設備的數據(即:寫磁盤)
      注: 此處數據會直接關係到proc出的b的值。
  • system 顯示採集間隔內發生的中斷次數
    • in:表示在某一時間間隔中觀測到的每秒設備中斷數
    • cs:表示每秒產生的上下文切換次數
  • CPU 顯示CPU的使用狀態(us+sy+id=100%)
    • us:表示用戶資源所花費CPU的百分比(當該值長時間>50時說明CPU數量不足)
    • sy:表示系統資源所花費CPU的百分比
    • id:表示CPU處於空閒狀態的百分比
    • wa:=wait,表示等待使用CPU的百分比(該數值大說明CPU不足)
    • st:表示被偷走的CPU所佔百分比(該值通常爲0,不用關注)

10.3 top命令

top命令能夠實時動態地(每3秒變一次)查看系統的總體運行狀況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。經過top命令所提供的互動式界面,用熱鍵能夠管理。其特色是把佔用系統資源(CPU,內存,磁盤IO等)最高的進程放在最前面,以確認是哪一個進程佔用內存。

top用法

語法: top [options]
Options:
-b:批量處理模式
-c:顯示詳細進程信息
-bn1:靜態顯示全部進程(該法多用於shell腳本)

[root@1 ~]# top
top - 23:28:08 up 12:24,  2 users,  load average: 0.00, 0.01, 0.05
Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1008392 total,   754160 free,   113712 used,   140520 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   740452 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                    
  490 root      20   0  302840   6340   4780 S  0.3  0.6   1:42.80 vmtoolsd                   
    1 root      20   0  125048   3560   2400 S  0.0  0.4   0:02.13 systemd                    
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kthreadd                   
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.21 ksoftirqd/0                
    6 root      20   0       0      0      0 S  0.0  0.0   0:01.39 kworker/u128:0             
……

注: 在top狀態下(按q退出),按shift+m能夠按內存使用大小進行排序(默認以CPU使用佔比排序),按shift+p恢復按CPU使用佔比排序,,按數字1能夠顯示每一個CPU的狀態。

說明:

  • 第一行是負載信息
  • 第二行是進程信息
  • 第三行是CPU使用信息
  • 第四行是內存使用信息
  • 第五行是交換區使用信息
  • 最下面是進程詳細信息:
    • PID:表示進程在系統中的id號,可配合kill命令結束某進程
    • RES:表示進程所用物理內存大小(單位:KB)
    • %MEM:表示內存使用百分比(單位:KB)

10.4 sar命令

sar命令是Linux下系統運行狀態統計工具,它將指定的操做系統狀態(如,平均負載,網卡流量,磁盤狀態,內存使用等)計數器顯示到標準輸出設備。它不一樣於其餘系統狀態監控工具的地方在於,它能夠打印歷史信息,能夠顯示從零點開始到當前時刻的系統狀態信息。

sar用法

使用‘yum install -y sysstat’安裝該命令!初次使用sar命令(不加選項、參數)會報錯,緣由是sar命令尚未生成相應的數據庫文件。其數據庫保存在‘/var/log/sa/’目錄下,該目錄下存放兩種文件,分別以‘sa日期’&‘sar日期’的格式命名(區別是sar文件在次日生成,可使用cat命令查看;sa文件實時<每一個整‘10’分鐘更新一次>生成,是二進制文件,沒法查看),最多保留一個月。

語法: sar [options] [參數]
Options:
-f:從指定文件提取報告

  • sar -n DEV m n 查看網卡流量(在此m、n的用法同vmstat命令!)
[root@1 ~]# sar -n DEV 1 2
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00時13分32秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00時13分33秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00時13分33秒     ens33      1.02      1.02      0.06      0.19      0.00      0.00      0.00

00時13分33秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00時13分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00時13分34秒     ens33      1.98      1.98      0.12      0.45      0.00      0.00      0.00

平均時間:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均時間:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均時間:     ens33      1.51      1.51      0.09      0.32      0.00      0.00      0.00

說明:

  • rxpck/s:表示接收數據(包)的個數

  • txpck/s:表示發送數據(包)的個數

  • rxKB/s:表示接收的數據量

  • txKB/s:表示發送的數據量
    注: 當rxpck/s的值大於4000或者rxKB/s的值大於5000時則多是在被攻擊(需配合抓包工具進一步確認)!

  • sar -q 查看系統負載(配合-f選項使用,查看歷史負載)

[root@1 ~]# sar -q -f 
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00時10分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
00時20分01秒         1       101      0.00      0.01      0.05         0
00時30分01秒         2       102      0.00      0.01      0.05         0
平均時間:         2       102      0.00      0.01      0.05         0
  • sar -b 查看磁盤信息
[root@1 ~]# sar -b 1 3
Linux 3.10.0-514.el7.x86_64 (adai003) 	2017年07月11日 	_x86_64_	(1 CPU)

00時36分28秒       tps      rtps      wtps   bread/s   bwrtn/s
00時36分29秒      0.00      0.00      0.00      0.00      0.00
00時36分30秒      0.00      0.00      0.00      0.00      0.00
00時36分31秒      0.00      0.00      0.00      0.00      0.00
平均時間:      0.00      0.00      0.00      0.00      0.00

10.5 nload命令

使用前須要先安裝該命令:

[root@1 ~]# yum install -y nload

注: 在安裝此包前須要先安裝yum擴展源:epel-release。

用法

[root@1 ~]# nload

mark
注: 在該界面顯示系統網絡動態信息,可以使用方向鍵在不一樣網卡之間進行切換,按q鍵退出,根據實時網速和總網速的比較能夠評估網絡狀態!

相關文章
相關標籤/搜索