Linux系統管理技巧

[toc]shell

Linux系統管理技巧

10.1 w 命令,查看當前系統的負載

用法以下數據庫

[root@localhost ~]# w
 15:15:19 up 2 min,  1 user,  load average: 0.05, 0.08, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.72.1     15:14    7.00s  0.08s  0.00s w

1. load average

第一行從左面開始顯示的信息依次爲:時間,系統運行時間,登陸用戶數,平均負載。 第二行開始以及下面全部的行,告訴咱們:當前登陸的都有哪些用戶,以及他們是從哪裏登陸的等等。其實,在這些信息當中,咱們最應該關注的應該是第一行中的 ‘load average:’ 後面的三個數值。緩存

第一個數值表示1分鐘內系統的平均負載值;(最能體現當前負載的工做狀況)服務器

第二個數值表示5分鐘內系統的平均負載值;工具

第三個數值表示15分鐘系統的平均負載值。性能

咱們着重看中第一個值,它表示單位時間段內CPU活動進程數。固然這個值越大就說明你的服務器壓力越大。通常狀況下這個值只要不超過服務器的cpu數量就沒有關係,若是服務器cpu數量爲8,那麼這個值若小於8,就說明當前服務器沒有壓力,不然就要關注一下了。ui

uptime和w命令的第一行是如出一轍;由於w信息豐富,咱們通常用w

[root@xaviyunserver ~]# w
 17:45:35 up 64 days,  9:47,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    221.224.0.190    17:44    7.00s  0.00s  0.00s w
[root@xaviyunserver ~]# uptime
 17:48:13 up 64 days,  9:49,  1 user,  load average: 0.00, 0.01, 0.05

2. 查看cpu核心數量, cat /proc/cpuinfo

[root@localhost ~]# cat /proc/cpuinfo

mark

這裏的processor計數從0開始,也就是說一個顯示爲0,二個顯示爲1.net

mark

3. uptime 實時查看,同W第一行

[root@localhost ~]# uptime
 15:44:37 up 32 min,  1 user,  load average: 0.00, 0.01, 0.05

4. 查看當前系統有幾個cpu,grep -c 'processor' /proc/cpuinfo

[root@localhost ~]# grep -c 'processor' /proc/cpuinfo
2

10.2 用vmstat 命令監控系統的狀態(是否瓶頸)

用法以下: markcode

vmstat命令打印的結果共分爲6部分:procs, memory, swap, io, system, cpu.。請重點關注一下r、b、si、 so、bi、bo、wa幾列。server

#vmstat           //顯示當前系統狀態
#vmstat 1       //每隔1秒輸出一次運行狀態,能夠是其餘任意數值,ctrl+c終止
#vmstat 1 5     //每隔1秒輸出一次運行狀態,輸出5次後終止

mark

1.procs顯示進程的相關信息 r、b

  • [ ] r (run):表示運行或等待CPU時間片的進程數。說明:不要誤覺得等待CPU時間片意味着這個進程沒有進行,實際上某一時刻一個CPU只能有一個進程,其餘進程只能排着隊等着,此時這些排隊等待CPU資源的進程依然是運行狀態。該數值若是長期大於服務器CPU的個數,則說明CPU資源不夠用了。
  • [ ] b (block):表示等待資源的進程數,這個資源指的是I/O、內存等。舉個例子:當磁盤讀寫很是頻繁時,寫數據就會很是慢,此時CPU運算很快就結束了,但進程須要把計算的結果寫入磁盤,這樣進程的任務纔算完成,那此時這個進程只能慢慢地等待,這樣這個進程就是這個b狀態。該數值若是長時間大於1,則須要關注一下。

2.memory顯示內存的相關信息 swpd、free、buff、cache:

  • [ ] swpd:表示切換到交換分區中的內存數量,單位爲KB。
  • [ ] free:表示當前空閒的內存數量,單位爲KB。
  • [ ] buff:表示(即將寫入磁盤的)緩衝大小,單位爲KB。
  • [ ] cache:表示(從磁盤中讀取的)緩存大小,單位爲KB。

3.swap顯示內存的交換狀況 si、so

  • [ ] si:表示由交換區寫入內存的數據量,單位爲KB。
  • [ ] so:表示由內存寫入交換區的數據量,單位爲KB。

4.io顯示磁盤的使用狀況 bi、bo

  • [ ] bi:表示從塊設備讀取數據的量(讀磁盤),單位爲KB。
  • [ ] bo:表示從塊設備寫入數據的量(寫磁盤),單位爲KB。

5.system顯示採集間隔內發生的中斷次數 in、cs

  • [ ] in:表示在某一時間間隔內觀測到的每秒設備的中斷次數。
  • [ ] cs:表示每秒產生的上下文切換次數。

6.cpu顯示CPU的使用狀態 us、sy、id、wa、st

  • [ ] us:顯示用戶下花費CPU的時間百分比。
  • [ ] sy:顯示系統花費CPU的時間百分比。
  • [ ] id:表示CPU處於空閒狀態的時間百分比。
  • us+sy+id =100%
  • [ ] wa:wait 表示I/O等待所佔用CPU的時間百分比,wa數值很大,說明CPU不夠用了
  • [ ] st:表示被偷走的CPU所佔百分比(通常都爲0,不用關注),服務器被虛擬化後會被偷走一部分CPU

以上所介紹的各個參數中,常常會關注r列,b列,和wa列,三列表明的含義在上邊說得已經很清楚。IO部分的bi以及bo也是要常常參考的對象。若是磁盤io壓力很大時,這兩列的數值會比較高。另外,當si, so兩列的數值比較高,而且在不斷變化時,說明內存不夠了,內存中的數據頻繁交換到交換分區中,這每每對系統性能影響極大。**

10.3 top命令顯示進程所佔系統資源

用法以下: mark 解析:一共119個常常,2個運行,117個處於休眠狀態(未被激活),0箇中止,0個zombie(殭屍進程)即主進程被意外中止了,留下了一些子進程,比較尷尬,只能自生自滅。 Top命令用於動態監控進程所佔系統資源,每隔3秒變一次。這個命令的特色是把佔用系統資源(CPU,內存,磁盤IO等)最高的進程放到最前面。

1. top命令打印出了不少信息,loadaverage、tasks、%CPU、%MEM、RES. 包括系統負載(loadaverage)、進程數(Tasks)、cpu使用狀況、內存使用狀況以及交換分區使用狀況。

  • [ ] KiB Mem&Swap,物理內存和交換分區的使用狀況,關注的是物理內存中的buff/cache

  • [ ] %CPU cpu的使用狀況,和系統負載loadaverage沒有關係,系統負載很高,而CPU%低的狀況

  • [ ] %MEM 使用內存的百分比

  • [ ] RES 進展所佔的內存大小,單位爲Kbyte

2. 輸入top指令後,M鍵查看內存,P鍵查看CPU%,數字1查看各個CPU

按大寫的M查看%MEN,並以大到小排序;

按大寫P,%CPU的使用狀況,按照大小順序排列。

按下數字1,產看每一個CPU的佔用狀況 mark 按數字1切換 mark

3. top -c 查看詳細的進程信息,以及常常對於的命令(路徑)

mark

4. top -bn1 靜態顯示全部進程,表示了非動態打印系統資源的使用狀況,在shell腳本中經常使用

mark

5. 同時須要關注的是PID,能夠用kill命令+PID 殺死該進程.

10.4 sar命令監控系統狀態

sar 命令很強大,它能夠監控系統全部資源狀態,好比平均負載、網卡流量、磁盤狀態、內存使用等等。它不一樣於其餘系統狀態監控工具的地方在於,它能夠打印歷史信息,能夠顯示當天從零點開始到當前時刻的系統狀態信息。若是你係統沒有安裝這個命令,請使用 yum install -y sysstat命令安裝。

1. yum install -y systat 安裝,不能直接執行sar

初次使用sar命令會報錯,那是由於sar工具尚未生成相應的數據庫文件(時時監控就不會了,由於不用去查詢那個庫文件)。它的數據庫文件在 「/var/log/sa/」 目錄下,每10分鐘抓一次,生成文件保存在該目錄下。

mark

2. 查看網卡流量 sar -n DEV,IFACE/rxpack/txpck/rxkB/txkB

sar -n DEV 1 10 //每一個1秒顯示一次,一共顯示10次

用法以下: mark

這個命令把監聽記錄的網卡信息打印出來,每隔10分鐘記錄一次。如下參數是重點關注的。

IFACE:表示網卡設備名稱.

rxpck/s:表示每秒進入收取的包的數量有多少,幾千是正常的,若是上萬說明被攻擊了

txpck/s:表示每秒發送出雲的包的數量有多少。

rxkB/s:表示每秒收取的數據量(單位爲KB)。

txkB/S:表示每秒發送的數據量

剩下後面幾列不須要關注。若是有一天你所管理的服務器丟包很是嚴重,那麼你就應該看一看這個網卡流量是否異常了,若是rxpck/s 那一列的數值大於**4000**,或者rxbyt/s那列大於5000000則頗有多是被攻擊了,正常的服務器網卡流量不會高於這麼多,除非是你本身在拷貝數據。這是你須要實時查看網卡流量

#### sar -n DEV 1 5  //每隔1秒輸出一次網卡流量狀態,5次後終止

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/K079IkLEaH.png?imageslim)

### 3.使用sar -n DEV -f 選項查看某一天的網卡流量歷史,後面跟文件名.

可是/var/log/sa/saXX 只能保存一個月

#sar -n DEV -f /var/log/sa/sa27

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/dBA8jF7l1l.png?imageslim)

### 4. 查看歷史負載 sar -q 這個命令有助於咱們查看服務器在過去某個時間的負載情況.
![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/k5clFlI601.png?imageslim)

### 5. sar -b 查看磁盤負載,讀寫狀況。

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/HA5h7gfk09.png?imageslim)

sar -b 1 5 //每隔1秒輸出一次磁盤負載狀態,5次後終止

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/jEb2B1d96B.png?imageslim)

## 10.5 用nload命令查看網卡流量

sar雖然能夠查看網卡流量,可是不夠直觀,還有一個更好用的工具,那就是nload。
### 1. 安裝nload:

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

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/dF5GeLLb0D.png?imageslim)

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/De97mfKd5d.png?imageslim)

### 2. 用↑,↓鍵切換不一樣網卡的流量監控狀況
> ncoming爲進入網卡的流量。

> Outgoing爲網卡出去的流量。

> 主要關注Curr那行的數據,其單位也能夠動態自動調整,很人性化。

> 按q退出該界面。

### 3. 在/var/log/sa/目錄下的saXX和sarXX,XX爲日期,saXX是二進制文件,只能用sar -f命令查看,而sar文件是須要一天才能生成的,能夠用cat命令查看

![mark](http://p0weeraap.bkt.clouddn.com/xavi2017/180127/kbJA1DEHck.png?imageslim)
相關文章
相關標籤/搜索