1. 程式人生 > >linux系統日常管理

linux系統日常管理

第十五章 linux系統日常管理

筆者在前面介紹的內容都為linux系統基礎類的,如果你現在把前面的內容全部很好的掌握了,那最好了不過筆者要說的是,即使你完全掌握了,你現在還是不能作為一名合格的linux系統管理員的,畢竟系統管理員要會做的事情太多了本章以及後面章節筆者會陸續教給你作為linux系統管理員所必備的知識只要你熟練掌握那絕對可以勝任一個最初級的管理員職位,不過只是初級的,因為你還需要在日常的管理工作中獲得成長

監控系統的狀態

1. w 檢視當前系統的負載

[image]

相信所有的linux管理員最常用的命令就是這個’w’了,該命令顯示的資訊還是蠻豐富的第一行從左面開始顯示的資訊依次為:時間,系統執行時間,登入使用者數,平均負載

第二行開始以及下面所有的行,告訴我們的資訊是,當前登入的都有哪些使用者,以及他們是從哪裡登入的等等其實,在這些資訊當中,筆者認為我們最應該關注的應該是第一行中的’load average:’後面的三個數值

第一個數值表示1分鐘內系統的平均負載值;第二個數值表示5分鐘內系統的平均負載值;第三個數值表示15分鐘系統的平均負載值這個值的意義是,單位時間段內CPU活動程序當然這個值越大就說明你的伺服器壓力越大一般情況下這個值只要不超過你服務器的cpu數量就沒有關係,如果你的伺服器cpu數量為8,那麼這個值若小於8,就說明你的伺服器沒有壓力,否則就要關注一下了到這裡你肯定會問,如何檢視伺服器有幾個

cpu

[image]

就是用這個命令了。’/proc/cpuinfo’這個檔案記錄了cpu的詳細資訊目前市面上的伺服器通常都是24cpu,在linux看來,它就是8cpu。檢視這個檔案時則會顯示8段類似的資訊,而最後一段資訊中processor : 後面跟的是’7’。所以檢視當前系統有幾個cpu,你可以使用這個命令:’ grep -c 'processor' /proc/cpuinfo’ 。

[image]

2. vmstat 監控系統的狀態

[image]

上面講的w檢視的是系統整體上的負載,通過看那個數值可以知道當前系統有沒有壓力,但是具體是哪裡(CPU,記憶體,磁碟等)有壓力就無法判斷了通過vmstat

就可以知道具體是哪裡有壓力。vmstat命令列印的結果共分為6部分:procs, memory, swap, io, system, cpu.請重點關注一下紅色標出的項

1procs顯示程序相關資訊

r:表示執行和等待cpu時間片的程序數,如果長期大於伺服器cpu的個數,則說明cpu不夠用了;

b:表示等待資源的程序數,比如等待I/O,記憶體等,這列的值如果長時間大於1,則需要你關注一下了;

2memory記憶體相關資訊

swpd :表示切換到交換分割槽中的記憶體數量

free :當前空閒的記憶體數量;

buff :緩衝大小,(即將寫入磁碟的);

cache :快取大小,(從磁碟中讀取的);

3swap記憶體交換情況

si :由記憶體進入交換區的數量;

so:由交換區進入記憶體的數量;

4io磁碟使用情況

bi :從塊裝置讀取資料的量(讀磁碟);

bo從塊裝置寫入資料的量(寫磁碟);

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

in :表示在某一時間間隔中觀測到的每秒裝置中斷數;

cs :表示每秒產生的上下文切換次數;

6CPU顯示cpu的使用狀態

us :顯示了使用者下所花費 cpu 時間的百分比;

sy :顯示系統花費cpu時間百分比;

id :表示cpu處於空閒狀態的時間百分比;

wa:表示I/O等待所佔用cpu時間百分比;

st :表示被偷走的cpu所佔百分比(一般都為0,不用關注);

以上所介紹的各個引數中,筆者經常會關注r列,b列,和wa列,三列代表的含義在上邊說得已經很清楚。IO部分的bi以及bo也是我要經常參考的物件如果磁碟io壓力很大時,這兩列的數值會比較高另外當si, so兩列的數值比較高,並且在不斷變化時,說明記憶體不夠了,記憶體中的資料頻繁交換到交換分割槽中,這往往對系統性能影響極大

[image]

筆者用vmstat時,經常用這樣的形式,’vmstat 1 5’ 表示每隔1秒鐘列印一次系統狀態,連續列印5當然你也可以 ‘vmstat 1 ‘ 表示每隔1秒鐘列印一次系統狀態,一直列印,除非你按ctrl + c強制結束

3. top 顯示程序所佔系統資源

[image]

這個命令用於動態監控程序所佔系統資源,每隔3秒變一次這個命令的特點是把佔用系統資源(CPU,記憶體,磁碟IO等)最高的程序放到最前面。top命令打印出了很多資訊,包括系統負載(load average程序數(Tasks、cpu使用情況記憶體使用情況以及交換分割槽使用情況其實上面這些內容可以通過其他命令來檢視,所以用top重點檢視的還是下面的程序使用系統資源詳細狀況這部分東西反映的東西還是比較多的,不過需要你關注的也就是幾項:%CPU, %MEM, COMMAND 這些專案所代表的意義,不用筆者介紹相信你也能看懂吧

[image]

另外筆者使用top命令時還常常使用-bn1這個組合選項,它表示非動態列印系統資源使用情況,可以用在指令碼中,你不妨記一下,以後也許你會用得到

4. sar 監控系統狀態

sar 命令很強大,它可以監控系統所有資源狀態,比如平均負載網絡卡流量磁碟狀態記憶體使用等等它不同於其他系統狀態監控工具的地方在於,它可以列印歷史資訊,可以顯示當天從零點開始到當前時刻的系統狀態資訊如果你係統沒有安裝這個命令,請使用”yum install -y sysstat”命令安裝初次使用sar命令會報錯,那是因為sar工具還沒有生成相應的資料庫檔案(時時監控就不會了,因為不用去查詢那個庫檔案)它的資料庫檔案在” /var/log/sa/”目錄下,預設儲存9因為這個命令太過複雜,所以筆者只介紹幾個

1)檢視網絡卡流量 ‘sar -n DEV ‘

[image]

IFACE這列表示裝置名稱,rxpck/s表示每秒進入收取的包的數量,txpck/s表示每秒傳送出去的包的數量,rxbyt/s表示每秒收取的資料量(單位Byte),txbyt/s表示每秒傳送的資料量後面幾列不需要關注如果有一天你所管理的伺服器丟包非常嚴重,那麼你就應該看一看這個網絡卡流量是否異常了,如果rxpck/s那一列的數值大於4000,或者rxbyt/s那列大於5,000,000則很有可能是被攻擊了,正常的伺服器網絡卡流量不會高於這麼多,除非是你自己在拷貝資料上面的命令是檢視網絡卡流量歷史的,如何時時檢視網絡卡流量呢?

[image]

另外也可以檢視某一天的網絡卡流量歷史,使用-f選項,後面跟檔名,如果你的系統格式Redhat或者CentOS那麼sar的庫檔案一定是在/var/log/sa/目錄下的

[image]

2)檢視歷史負載 ‘sar -q’

[image]

這個命令有助於我們檢視伺服器在過去的某個時間的負載狀況

關於sar的介紹筆者不願寫太多,畢竟介紹太多會給你帶來更多的壓力,其實筆者介紹這個命令的目的只是讓你學會檢視網絡卡流量(這是非常有用的)如果你很感興趣那就man一下吧,它的用法太多了

5. free檢視記憶體使用狀況

[image]

只要你敲一個free然後回車就可以當前系統的總記憶體大小以及使用記憶體的情況從上圖中可看到當前系統記憶體總大小為235128(單位是k)已經使用120368,剩餘94760。其實真正剩餘並不是這個94760,而是第二行的213388,真正使用的也是第二行的21740。這是因為系統初始化時,就已經分配出很大一部分記憶體給快取,這部分快取用來隨時提供給程式使用,如果程式不用,那這部分記憶體就空閒所以,檢視記憶體使用多少,剩餘多少請看第二行的資料另外你還可以加-m或者-g選項分別以MG為單位列印記憶體使用狀況

[image]

6. ps 檢視系統程序

作為系統管理員,一定要知道你所管理的系統都有那些程序在執行,在windows下只要開啟工作管理員即可檢視linux下呢?其實在上面介紹的top命令就可以,但是不夠專業,當然還有專門顯示系統程序的命令

[image]

對了,就是這個’ps aux’。筆者也經常看到有的人喜歡用’ps -elf’ 大同小異,顯示的資訊基本上是一樣的。 ps命令還有更多的用法,筆者不再做介紹,因為你只要會用這個命令就足夠了,請man一下下面介紹上圖上出現的幾個引數的意義

PID:程序的id,這個id很有用,在linux中核心管理程序就得靠pid來識別和管理某一個程,比如我想終止某一個程序,則用 ‘kill 程序的pid’,有時並不能殺掉,則需要加一個-9選項了’kill -9 程序pid’

STAT :表示程序的狀態,程序狀態分為以下幾種(不要求記住,但要了解

D  不能中斷的程序(通常為IO

R  正在執行中的程序

S  已經中斷的程序,通常情況下,系統中大部分程序都是這個狀態

T  已經停止或者暫停的程序,如果我們正在執行一個命令,比如說sleep 10,如果我們按一下ctrl -z讓他暫停,那麼我們用ps檢視就會顯示T這個狀態

W 這個好像是說,從核心2.6xx以後,表示為沒有足夠的記憶體頁分配

X  已經死掉的程序(這個好像從來不會出現)

Z  殭屍程序,殺不掉,打不死的垃圾程序,佔系統一小點資源,不過沒有關係如果太多,就有問題了一般不會出現

<  高優先順序程序

N  低優先順序程序

L   在記憶體中被鎖了記憶體分頁

s   主程序

l   多執行緒程序

+  代表在前臺執行的程序

這個ps命令是筆者在工作中用的非常多的命令之一,所以請記住它吧關於ps命令的使用,筆者經常會連同管道符一起使用,用來檢視某個程序或者它的數量

[image]

上面的6不對,需要減掉1,因為使用grep命令時,grep命令本身也算作了一個

7. netstat 檢視網路狀況

[image]

netstat命令用來列印網路連線狀況系統所開放埠路由表等資訊筆者最常用的關於netstat的命令就是這個netstat -lnp(列印當前系統啟動哪些埠)以及netstat -an(列印網路連線狀況)這兩個命令非常有用,請一定要記住

[image]

如果你所管理的伺服器是一臺提供web服務(80埠)的伺服器,那麼你就可以使用netstat -an |grep 80開檢視當前連線web服務的有哪些IP

8. 抓包工具tcpdump

有時候,也許你會有這樣的需求,想看一下某個網絡卡上都有哪些資料包,尤其是當你初步判定你的伺服器上有流量攻擊這時,使用抓包工具來抓一下資料包,就可以知道有哪些IP在攻擊你了

[image]

如果你沒有tcpdump這個命令,需要用’yum install -y tcpdump ’命令去安裝一下上圖中第三列和第四列顯示的資訊為哪一個IP+port在連線哪一個IP+port,後面的資訊是該資料包的相關資訊,如果不懂也沒有關係,畢竟你不是專門搞網路的,而這裡需要你關注的只是第三列以及第四列。-i選項後面跟裝置名稱,如果你想抓eth1網絡卡的包,後面則要跟eth1.至於-nn選項的作用是讓第三列和第四列顯示成IP+埠號的形式,如果不加-nn則顯示的是主機名+服務名稱

【linux網路相關

1. ifconfig 檢視網絡卡IP

ifconfig類似與windowsipconfig,不加任何選項和引數只打印當前網絡卡的IP相關資訊(子網掩碼閘道器等)

[image]

當然ifconfig後面可以跟裝置名,只打印指定裝置的IP資訊

[image]

windows下設定IP非常簡單,然而在命令視窗下如何設定?這就需要去修改配置檔案/etc/sysconfig/network-scripts/ifcfg-eth0了,如果是eth1那麼配置檔案是/etc/sysconfig/network-scripts/ifcfg-eth1.

[image]

如果想修改IP的話,則只需要修改IPADDR , NETMASK以及GATEWAY即可如果你的linux是通過dhcp伺服器自動獲得的IP,那麼配置檔案肯定和上圖中的不一樣,BOOTPROTO那裡會是’dhcp’,如果你要配置成靜態IP的話,這裡就需要寫成’none’。關於如何設定IP以及子網掩碼的這些知識屬於網路相關的基礎知識了,如果你對這方面比較陌生的話,建議你去看看網路相關的資料當修改完IP後需要重啟網路服務新IP才能生效,重啟命令為’ service network restart’

[image]

另外如果你有多個網絡卡的情況時,只想重啟某一個網絡卡的話,還可以使用這個命令

[image]

ifdown 即停掉網絡卡,ifup即啟動網絡卡有一點要提醒你的是,如果你遠端登入你的伺服器,當你使用ifdown eth0這個命令的時候,很有可能後面的命令ifup eth0不會被執行,這樣導致你斷網而無法連線伺服器,所以請儘量使用service network restart 這個命令來重啟網絡卡

2. 給一個網絡卡設定多個IP

linux系統中,網絡卡是可以設定多重IP的,筆者曾經管理的一臺伺服器的eth1就設定了5IP,實在是夠變態的

[image]

ifcfg-eth0複製成ifcfg-eth0:1然後編輯ifcfg-eth0:1修改DEVICE以及IPADDR儲存後重啟網絡卡

[image]

再次檢視eth0上就有兩個IP這裡你要注意一下,檔名(ifcft-eth0:1)寫成什麼都無所謂,但是檔案內的DEVICE=eth0:1一定要按照這樣的格式寫,否則你啟動不起來網絡卡

3. 檢視網絡卡連線狀態

[image]

mii-tool這個命令用來檢視網絡卡是否連線,如圖顯示link ok等字樣說明連線正常,否則會顯示no link字樣,下圖是筆者所管理的一臺伺服器,eth1網絡卡沒有連線

[image]

如果你的機器是虛擬機器,那麼你使用該命令時應該顯示成如下:

[image]

這是因為使用的是虛擬網絡卡,不支援這個工具檢視不用多關注此,你記住這個