七週一次課linux
10.1 使用w查看系統負載 數據庫
10.2 vmstat命令 api
10.3 top命令 bash
10.4 sar命令 服務器
10.5 nload命令網絡
10.1 使用w查看系統負載 運維
這一章的內容是核心,之後會用的概率也是很大的,只要掌握必備的基礎知識,作初級系統管理員是不成問題的。dom
做爲一個運維工程師、系統管理員,若是對本身的系統不瞭解的話,那怎麼排查問題呢?若是出現問題的話,確定要查一下是什麼問題,哪裏的問題,系統的資源的耗費狀況如何查看。工具
使用w命令查看當前系統的負載fetch
[root@localhost sbin]# w
17:07:54 up 7:08, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 Sun21 20:06m 0.02s 0.02s -bash
root pts/0 192.168.11.1 Sun21 2.00s 0.22s 0.02s w
[root@localhost sbin]# date
Mon Jan 22 17:07:58 EST 2018
第一部分是系統時間,使用date命令也能夠查看當前時間。
第二部分是系統運行時間
第三部分是登錄了幾個用戶,從下面能夠看到,也能夠看到登陸了哪一個終端。若是是網絡登陸的話,終端是pts/0,pts/1這些;若是是系統登陸,會出現tty1,tty1- tty6是6個終端。from是能夠看出從哪裏來的。
load average是關鍵的一段,這是它的系統負載,平時用的看的最多的就是這一部分了。它後面跟三個數字,分別是1分鐘、5分鐘、15分鐘內系統的平均負載值。第一個數字是1分鐘內使用CPU的活動的進程有多少個,值越大說明服務器壓力越大。這是個平均值,這個數字能夠是零點幾,也能夠是一百多,當前值是0,說明系統沒有負載,就說明沒有活動的進程,這說明服務器處於空閒的狀態。這種狀態對服務器,對於Linux操做系統來說就比較浪費,它在空耗。
LOGIN@是登錄的時間,IDLE是空閒了多長時間,PCPU是使用CPU的時間,WHAT是適用的命令,後面的能夠不用管它。
那什麼值是理想狀態呢?看你有幾顆CPU,這幾顆CPU指的是邏輯CPU,而不是物理CPU。CPU有不少類型,Intel的,AMD的,都會有幾顆CPU,每顆上又會有不少邏輯CPU。查看CPU的命令以下:
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x70
cpu MHz : 2808.139
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips : 5616.00
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping : 9
microcode : 0x70
cpu MHz : 2808.139
cache size : 6144 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 22
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 ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch epb fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt dtherm arat pln pts hwp hwp_notify hwp_act_window hwp_epp
bogomips : 5616.00
clflush size : 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:
[root@localhost ~]#
須要查看的數字是processor,若是是0,就表明有1顆;是1表明是2顆;若是有39,就表明有40顆,固然這裏說的是邏輯CPU,而不是物理CPU。系統上的數字是0,表明有一顆CPU,用w命令查到的第一個數字是1是最好的,不閒也沒什麼壓力。processor的最大數字是7,表明最多有8顆CPU,只要w命令查到的數字不大於8,就是能夠的。CPU在工做的時候,只要保證每一個CPU都有一個進程在佔用它,就沒有問題。就能夠工做過來,就不會累,也沒有排隊的狀況。
還有一個命令是:uptime,它和w命令的結果同樣。
[root@localhost ~]# uptime
21:00:44 up 20 min, 2 users, load average: 0.00, 0.01, 0.06
[root@localhost ~]# w
21:00:47 up 20 min, 2 users, load average: 0.00, 0.01, 0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 20:47 13:35 0.03s 0.03s -bash
root pts/0 192.168.231.1 20:42 7.00s 0.11s 0.02s w
[root@localhost ~]#
注:/proc/cpuinfo文件記錄了CPU的詳細信息。目前市場上多爲2顆多核CPU,在Linux看來,它就是2*n個CPU(n爲單顆物理CPU上有幾核)。若是n爲4,則查看這個文件時會顯示8段信息,而最後一段信息的processor會顯示7,查看當前系統有幾個CPU,可使用命令grep -c 'processor' /proc/cpuinfo。而後查看有幾顆物理CPU時,則須要查看關鍵字physical id。
[root@localhost sbin]# grep -c 'processor' /proc/cpuinfo
2
[root@localhost sbin]#
10.2 vmstat命令
咱們用w命令學會了查看負載狀況,若是出現了負載值偏高的狀況,如查詢的數字大於CPU核數了,說明CPU不夠用了。此時就須要思考CPU不夠用的緣由,進程在幹什麼,都有哪些任務在使用CPU,你可能想去查看系統的瓶頸在哪裏。
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1195604 2084 367804 0 0 112 4 95 99 0 1 98 1 0
[root@localhost ~]#
能夠查到CPU核數,內存,虛擬內存交換分區,io就是磁盤,系統的進程等等相關的東西。常用vmstat 1命令,每隔一秒輸出一次狀態,動態顯示,感受差很少能夠Ctrl C結束。
[root@localhost ~]# 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
1 0 0 1195360 2084 367836 0 0 106 3 92 96 0 1 98 1 0
0 0 0 1195360 2084 367836 0 0 0 0 78 80 0 0 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 92 91 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 87 80 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 92 89 0 1 100 0 0
0 0 0 1195360 2084 367836 0 0 0 0 64 61 0 0 100 0 0
^C
[root@localhost ~]#
固然也能夠vmstat 1 5,每隔一秒輸出一次狀態,輸出5次自動結束。
[root@localhost ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1195312 2084 367828 0 0 101 3 90 93 0 1 98 1 0
0 0 0 1195312 2084 367828 0 0 0 0 109 102 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 68 67 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 87 86 0 0 100 0 0
0 0 0 1195312 2084 367828 0 0 0 0 74 69 0 0 100 0 0
[root@localhost ~]#
咱們只須要關心以下幾列:
proc顯示進程的相關信息:
r,是run的簡寫,表示系統中有多少個進程是屬於run的狀態。若是系統只有一顆CPU,可是進程有10個,那就須要排隊了。某一個時間點只可能有一個進程在使用CPU,由於系統只有一顆CPU,其餘進程都在排隊,等到你的時候你再去用。但它們那是循環的,每一個進程都有機會使用CPU,均可以使用一下子。不論是在使用仍是在排隊,都是處於r的狀態。若是該數值長期大於服務器CPU的個數,則說明CPU資源不夠用了。
b,是block的縮寫,表示等待資源的進程數。b就是說進程被CPU之外的資源(硬盤或者網絡)給阻斷了,處於一個等待狀態,卡死了,b被堵死了。好比說網速慢,進程想要給你發一個數據包,假如網速很快,只須要1秒就發完了。可是如今速度慢,可能就花了10秒鐘,就是由於網速太慢,這個時候只能等網速了,這就是有多少進程在等待了,在block。
memory顯示內存的相關信息
swpd,表示切換到交換分區中的內存數量,單位爲KB。之前講分區時,有個swap交換分區,當內存不夠時,系統能夠把內存中的一部分數據臨時放到swap空間裏面去。若是這個數字不變,那還好,沒有關係;若是這個數字在持續不斷的變化,那說明內存和交換分區在持續不斷的交換數據,這就只能說明內存不夠了。
free,buff,cache咱們講內存時,再講這幾個單詞的含義。
swap顯示內存的交換狀況
si、so和swapd相關,若是swapd頻繁變化,那他們也會相應發生變化。
si:表示有多少數據(塊)是由swap交換區進入內存中的,單位爲KB。i表示in,進入內存的。o表示out,so表示有多少是從內存中出來的。
io顯示磁盤的狀況
bi,bo是和磁盤有關係的。bi表示從塊設備讀取數據的量(讀磁盤),單位爲KB。bo表示從塊設備寫入數據的量(寫磁盤),單位爲KB。這個數據量很大,說明磁盤在頻繁的讀寫。io相比較CPU也好,內存也好,是很慢的。若是有那麼多的數據讀寫,確定會形成並列增長,由於有不少進程在等待磁盤,這個是必然的。
CPU:顯示CPU的使用狀態
us:表示用戶級別的,好比說一個操做系統,確定不可能只運行一個系統,還有跑一些服務。好比跑了一個網站,跑了一個MySQL,網站也好,MySQL也好,確定會佔一些資源,它就會體現us這一方面了,user用戶佔用的狀況。us的數字是不會超過100的,由於一共就100%。us數字表示用戶下的資源佔用CPU的百分比,us長期大於50就說明系統資源不夠了。
sy:顯示系統自己花費CPU的時間百分比。
id:表示空閒的百分比us+sy+id=100
wa:wait等待,表示I/O等待所佔用CPU的時間百分比,這一列很大,說明CPU不夠用了。
經過vmstat命令能夠斷定出系統的瓶頸,如CPU不夠,內存不夠,仍是磁盤io太大,均可以斷定出來。
10.3 top命令
用top命令顯示進程所佔的系統資源
能夠用top查看具體的進程,查看進程使用資源狀況
[root@localhost ~]# top
top - 21:23:13 up 43 min, 2 users, load average: 0.08, 0.06, 0.06
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1194320 free, 302480 used, 370248 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1360196 avail Mem
4 root 20 0 0 0 0 S 0.3 0.0 0:01.91 kworker/0:0
1788 gdm 20 0 1313128 23328 14320 S 0.3 1.2 0:04.02 gnome-settings-
2545 root 20 0 157716 2236 1532 R 0.3 0.1 0:01.36 top
1 root 20 0 193968 7224 4056 S 0.0 0.4 0:02.06 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.04 ksoftirqd/0
……中間省略一部分
43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
45 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
[root@localhost ~]#
第一行和w命令查到的系統負載是同樣的,總共有多少任務,有多少運行的任務,有多少正在sleeping的任務。有多少stopped的任務,有多少zombie的任務。st是被偷走的CPU百分比。
殭屍進程,主進程被意外終止,留下的子進程就沒人管了,這種進程就比較尷尬,沒人管,只能自生自滅。
風扇轉的歡,CPU很燙,一般說明CPU使用率很高。us長期在60%以上是對CPU沒有好處的。雖然資源利用率高,可是對機器是沒有好處的。
下面是真正須要關心的東西,默認狀況下,它會按CPU百分比從高到低排序,%MEM是內存,RES是物理內存大小,單位是KB千字節。
按大小字母M,會出現按內存使用大小排序,能夠看到進程使用內存的具體大小。按大小字母P,換回CPU使用大小排序。按1的話,下面會列出
%Cpu0 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
全部的CPU使用狀況。按字母q會推出top命令。
使用top -c命令能夠查看具體的進程命令,全局的路徑,看的比較詳細。
使用top -bn1命令,能夠靜態的一次性的把全部的信息所有顯示出來。
[root@localhost ~]# top -bn1
top - 23:20:31 up 2:40, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 147 total, 1 running, 146 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 3.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1194396 free, 302124 used, 370528 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1360420 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4173 root 20 0 157584 2056 1464 R 6.2 0.1 0:00.01 top
1 root 20 0 193968 7224 4056 S 0.0 0.4 0:02.62 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.04 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.22 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
……中間省略不少
4083 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kworker/0:0
4092 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0
4158 root 20 0 107904 612 516 S 0.0 0.0 0:00.00 sleep
[root@localhost ~]#
這種用法適合在寫腳本的時候用。
能夠關注一下PID,好比說要殺死一個命令,可使用PID去殺。kill PID命令就能夠殺死一個進程。
USER是哪一個用戶運行的,PR、NI是關於優先級的,不須要過多關注。
注:使用top命令重點查看的仍是下面的進程使用系統資源的詳細情況。
10.4 sar命令
sar是一個很是全面的分析系統狀態的命令,主要用來查看網卡的流量。它一樣能夠查看你的CPU、內存、磁盤的狀態,它被稱爲linux系統中的瑞士軍刀,也就是它的命令很是複雜和豐富。與其餘系統狀態監控工具不一樣,它能夠打印歷史信息,能夠顯示當天從零點開始到當前時刻的系統狀態信息。
若是沒有這個命令,能夠經過
yum install -y sysstat來安裝。
安裝完這個命令,首次使用這個命令會出現"沒有這個文件或目錄"錯誤,那是由於sar工具尚未生成相應的數據庫文件(無需時時監控,由於不用去查詢那個庫文件)。
若是sar不加參數的話,它會默認調用系統裏面保留的歷史文件,
[root@localhost ~]# sar #這裏已經安裝,沒有報錯
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
[root@localhost ~]# which sar
/usr/bin/sar
[root@localhost ~]# ls /var/log/sa
sa03 sa06 sa09 sa11 sa15 sa17 sa19 sa22 sa24 sa26 sa28 sar15 sar21 sar26
sa05 sa08 sa10 sa14 sa16 sa18 sa21 sa23 sa25 sa27 sar08 sar16 sar24 sar27
[root@localhost ~]#
這個目錄就是它生成的歷史文件所在的目錄,什麼叫歷史文件呢?由於sar有一個特性,每10分鐘會把系統的狀態過濾一遍,抓一遍保存在文件裏,這個文件就存在上面的目錄裏。
這個命令要想使用,須要加上合適的選項和參數,若是要查看網卡的流量,須要使用以下命令:
[root@localhost ~]# sar -n DEV 1 10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:30:43 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:44 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:44 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:45 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:45 AM ens33 2.00 2.00 0.12 0.62 0.00 0.00 0.00
07:30:45 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:46 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:46 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:46 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:47 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:47 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:47 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:48 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:48 AM ens33 1.98 1.98 0.15 0.64 0.00 0.00 0.00
07:30:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:49 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:49 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:50 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:50 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:50 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:51 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:51 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:51 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:52 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:52 AM ens33 1.00 1.00 0.06 0.56 0.00 0.00 0.00
07:30:52 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:30:53 AM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:30:53 AM ens33 2.00 2.00 0.12 0.62 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: virbr0-nic 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: virbr0 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: ens33 1.20 1.20 0.07 0.52 0.00 0.00 0.00
[root@localhost ~]#
這個用法和vmstat的用法相似,就是每隔1秒鐘顯示1次,總共顯示10次結束。
IFACE表示網卡的名字。
rxpck/s和txpck/s表示每秒鐘的包的數量,單位是個。rx是receive的簡寫,表明收取的,tx表明發送的。
rxkB/s這一列表示每秒收取的數據量(單位是KB)
txkB/s這一列表示每秒發送的數據量(後面幾列不須要關注,阿銘老師工做這麼多年,後面幾列都是不超過0的,也就是都是0)
一個網站若是遭到攻擊,它會發送不少的數據包給你的網站,意味着你要接受不少的數據包。量很大的話,意味着你的網卡承擔不了,最終致使網絡堵塞,你的網站不能打開。
那多少包合適呢?
有時候也要關注網卡流量是否跑滿,好比你的公司買了一個機櫃,分配了一些帶寬(好比說100M),100M不大,若是換算成常規理解的就是12.5M/s,也不是很大。若是有幾我的同時下載的話,很快就佔滿了。若是rxpck/s的數據包有幾千是正常的,若是有幾萬的話,就不正常了。有幾萬,幾十萬的話,就是被攻擊了。若是被攻擊了,能夠看rxpck/s的數據包有多少,這個不太肯定,須要用抓包工具,這個之後再講。
[root@localhost ~]# sar
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM CPU %user %nice %system %iowait %steal %idle
07:30:01 AM all 0.08 0.00 0.21 0.05 0.00 99.66
07:40:01 AM all 0.04 0.00 0.24 0.01 0.00 99.71
07:50:01 AM all 0.04 0.00 0.14 0.00 0.00 99.82
Average: all 0.05 0.00 0.19 0.02 0.00 99.73
[root@localhost ~]# ls /var/log/sa/
sa03 sa06 sa09 sa11 sa15 sa17 sa19 sa22 sa24 sa26 sa28 sar15 sar21 sar26
sa05 sa08 sa10 sa14 sa16 sa18 sa21 sa23 sa25 sa27 sar08 sar16 sar24 sar27
[root@localhost ~]#
如今運行sar命令不會報錯了,由於/var/log/sa下已經生成了文件,每隔10分鐘會抓一次。
使用以下命令能夠查看某一天的網卡流量:
sar -n DEV -f /var/log/sa/sarn,n表明具體的日期
[root@localhost ~]# sar -n DEV -f /var/log/sa/sar15
Invalid system activity file: /var/log/sa/sar15
[root@localhost ~]#
雖然沒有查看數據,可是有數據的話,是能夠查到的。
數據在這個目錄下最多保留一個月
sar -q是查看服務器在過去的某個時間的負載狀況
[root@localhost ~]# sar -q 1 10
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
08:00:43 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
08:00:44 AM 0 246 0.00 0.01 0.05 0
08:00:45 AM 0 246 0.00 0.01 0.05 0
08:00:46 AM 0 246 0.00 0.01 0.05 0
08:00:47 AM 0 246 0.00 0.01 0.05 0
08:00:48 AM 2 246 0.00 0.01 0.05 0
08:00:49 AM 0 246 0.00 0.01 0.05 0
08:00:50 AM 0 246 0.00 0.01 0.05 0
08:00:51 AM 0 246 0.00 0.01 0.05 0
08:00:52 AM 0 246 0.00 0.01 0.05 0
08:00:53 AM 0 246 0.00 0.01 0.05 0
Average: 0 246 0.00 0.01 0.05 0
[root@localhost ~]#
[root@localhost ~]# w
08:01:31 up 48 min, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.231.1 07:16 3.00s 0.19s 0.05s w
[root@localhost ~]#
[root@localhost ~]# sar -q
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
07:30:01 AM 4 247 0.01 0.04 0.09 0
07:40:01 AM 3 246 0.00 0.01 0.05 0
07:50:01 AM 2 246 0.00 0.01 0.05 0
08:00:01 AM 5 248 0.00 0.01 0.05 0
Average: 4 247 0.00 0.02 0.06 0
[root@localhost ~]#
sar -b是查看磁盤的,看它的讀和寫。
[root@localhost ~]# sar -b
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
07:13:34 AM LINUX RESTART
07:20:02 AM tps rtps wtps bread/s bwrtn/s
07:30:01 AM 0.29 0.10 0.19 4.69 4.06
07:40:01 AM 0.16 0.00 0.16 0.16 2.09
07:50:01 AM 0.03 0.00 0.03 0.00 0.33
08:00:01 AM 0.14 0.00 0.14 0.15 2.01
Average: 0.16 0.03 0.13 1.25 2.12
[root@localhost ~]#
下面的命令是看它的讀和寫
[root@localhost ~]# sar -b 1 5
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 01/19/2018 _x86_64_ (2 CPU)
08:03:44 AM tps rtps wtps bread/s bwrtn/s
08:03:45 AM 0.00 0.00 0.00 0.00 0.00
08:03:46 AM 0.00 0.00 0.00 0.00 0.00
08:03:47 AM 0.00 0.00 0.00 0.00 0.00
08:03:48 AM 0.00 0.00 0.00 0.00 0.00
08:03:49 AM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00
[root@localhost ~]#
10.5 nload命令
sar命令能夠查看網卡流量,可是不夠直觀,使用nload命令更好。nload命令默認沒有安裝,須要使用以下命令安裝:
yum install -y epel-release;yum install -y nload
安裝完運行,就會出現動態的顯示網卡:
最上面一行是網卡名字以及IP地址,按向右箭頭能夠查看其餘網卡(lo)的網絡流量。輸出結果分爲兩部分,Incoming爲進入網卡的流量,Outgoing爲網卡出去的流量。咱們關注的固然是Curr那行的數據,其單位也能夠動態自動調整,很是人性化。按q退出該界面。買的帶寬是出去的帶寬,若是有攻擊,進來的數字就會很大。
sar的補充內容:
[root@localhost ~]# ls /var/log/sa/
[root@localhost ~]#
這個目錄等到明天才會生成,sarn是能夠經過cat來查看的,而san不能。
友情連接:阿銘Linux