Linux服務器的16個監控命令

想不想知道你的服務器到底在幹什麼?那麼你要知道本文介紹的這些基本命令。一旦你熟悉掌握了這些命令,就爲成爲專業的 Linux系統管理員打下了基礎。ios

你能夠經過圖形化用戶界面(GUI)程序來獲取這些外殼命令提供的大量信息,具體取決於使用哪種Linux發行版。好比說,SUSE Linux就有一款出色的、圖形化配置和管理工具YaST,KDE的KDE System Guard一樣很出色。程序員

不過,Linux管理員要明白的一個常理是:只有絕對必要時,才應該在服務器上運行GUI。那是因爲,Linux GUI耗用系統資源,而這些資源本來能夠更合理地用在其餘地方。因此,儘管使用GUI程序很適合對服務器健康情況作一個基本的檢查,可是若是你想知道到底發生了什麼,請關閉GUI,開始從Linux命令外殼使用這些工具。服務器

這還意味着,只要在須要時,你才應該在服務器上開啓GUI;不用的時候,就及時關掉。爲了確保性能最佳,Linux服務器應該在運行級別(runlevel)3下運行,這個運行級別徹底支持網絡和多個用戶,可是在機器啓動時,又不開啓GUI。若是你果然須要圖形化桌面,老是能夠從外殼提示符下運行startx,得到圖形化桌面。網絡

若是你的服務器啓動後進入到圖形化桌面,就須要更改這種狀況。爲此,進入到終端窗口,使用su命令切換到root用戶,而後用你經常使用的編輯器打開/etc/inittab文件。tcp

一旦進入到文件裏面,找到initdefault這一行,將id:5:initdefault:改成id:3:initdefault:。編輯器

要是沒有/etc/inittab文件,就建立一個,並添加id:3這一行。保存後退出。下次你啓動進入服務器時,它會啓動進入到運行級別3。若是你不想在進行這種更改後重啓,也能夠用命令init 3,當即設置服務器的運行級別。ide

一旦你的服務器在init 3下運行,就能夠開始使用下列外殼程序,看看你的服務器裏面出現了什麼狀況。工具

iostat性能

iostat 命令詳細地顯示了存儲子系統方面的狀況。你一般用iostat來監控存儲子系統整體上運行情況如何,而且在用戶注意到服務器運行緩慢以前提前發現輸入/輸出緩慢的問題。相信我,你應該在用戶發現這些問題以前先發現這些問題!調試

meminfo和free

meminfo爲你詳細顯示了內存方面的狀況。你一般可使用另外一個程序,好比cat和grep,來訪問meminfo的信息。好比說,cat /proc/meminfo爲你詳細顯示了服務器的內存在任何一個時間的使用狀況。

若是想快速瞭解內存的概要信息,可使用free命令。簡而言之,free爲你提供了概要信息;meminfo爲你提供了詳細信息。

mpstat

mpstat命令能夠報告多處理器服務器上每一個可用處理器的活動狀況。現在,因爲多核處理器,這個命令適用於幾乎全部服務器。mpstat還能夠報告全部服務器上的處理器的平均活動狀況。它讓你可以按照系統或按照處理器來顯示總的處理器統計信息。這個概要信息能夠在潛在的應用程序問題惹毛用戶以前提醒你注意。

netstat

netstat與ps同樣,也是Linux管理員天天都使用的Linux工具。它顯示了與網絡有關的大量信息,好比套接口使用狀況、路由、接口、協議、網絡統計信息及更多信息。最經常使用的一些選項以下:

-a 顯示套接口的全部信息

-r 顯示路由信息

-i 顯示網絡接口的統計信息

-s 顯示網絡協議的統計信息

nmon

nmon是Nigel’s Monitor的簡稱,這款廣受歡迎的開源工具用來監控Linux系統的性能。nmon能夠監控多個子系統的性能信息,好比處理器使用率、內存使用率、運行隊列的信息、磁盤輸入/輸出統計信息、網絡輸入/輸出統計信息、內存分頁活動和進程衡量指標。而後,你能夠經過curses「圖形化」界面,查看nmon的實時系統衡量結果。

想運行nmon,你能夠從外殼來啓動該工具。一旦啓動,只要輸入單鍵命令,就能夠選擇要監控的子系統。好比說,想得到處理器、內存和磁盤等方面的統計信息,只要分別輸入c、m和d。也可使用帶-f標誌的nmon,將性能統計信息保存到CSV文件中,以便往後分析。


1013510.jpg


就平常的服務器監控而言,我以爲nmon是個人Linux系統管理工具包中最有用的一個程序。

pmap

pmap命令用來報告服務器的進程所使用的內存量。你能夠用這個工具來肯定服務器上哪些進程被分配了內存、這些進程中有誰在大量使用內存。

ps和pstree

ps和pstree這兩個命令是Linux系統管理員的兩個得力助手。它們都能以列表的形式顯示全部目前在運行的進程。ps能夠告訴你服務器的程序在使用多少的內存和處理器時間。pstree顯示的信息比較少,但着重代表了哪些進程是其餘進程的子進程。掌握了這些信息,你就能發現失控的進程,而後用Linux「不留活口」的kill命令,來終止這些進程。

sar

sar程序比如是系統監控工具領域的瑞士×××。sar命令實際上由三個程序組成:顯示數據的sar、收集數據的sa1以及保存數據的sa2。一旦安裝完畢,sar就能生成詳細的概要信息,顯示處理器使用率、內存分頁活動、網絡輸入/輸出和傳輸方面的統計信息、進程建立活動以及磁盤設備活動。sar和nmon的一大區別在於,前者更適合長期監控系統,我以爲nmon則比較適合幫助我快速查看服務器的運行情況。

strace

strace 常常被認爲是程序員的調試工具,但它的功用不只僅用來調試。它能夠截獲和記錄進程調用系統的狀況。於是,它是一個實用的診斷、教學和調試工具。好比說,你可使用strace來查出某個程序在啓動時實際上使用哪一個配置文件。

不過strace的確有一個缺陷。它在檢查某個進程時,該進程的性能會一落千丈。於是,只有在我已經有極其充分的理由認爲某個程序引發問題的狀況下,才使用strace。

tcpdump

tcpdump是一個簡單而可靠的網絡監控實用工具。其基本的協議分析功能讓你可以粗略查看網絡上的狀況。不過想真正深刻分析網絡方面的狀況,你應該使用Wireshark(下面有介紹)。

top

top命令顯示了活動進程方面的狀況。默認狀況下,它顯示了服務器上運行的最消耗處理器的任務,並且每5秒鐘就刷新一次列表。你還能夠按多個標準對進程進行分類,好比PID(進程ID);年限,最新的列在最前面;時間,按累計時間;以及駐留內存使用狀況和自啓動以來一直使用處理器的總時間。我以爲它提供了一種快速而簡易的方法,便於查看有沒有進程開始即將失控、帶來問題。

uptime

uptime可用來查看某臺服務器運行了多久、有多少個用戶登陸上去。它還顯示了服務器平均負載的概要信息。負載的最佳值是1或更小,這意味着每一個進程能夠當即訪問處理器、不存在處理器週期丟失的狀況。

vmstat

大致上來講,你可使用vmstat來監控虛擬內存方面的狀況。Linux不斷使用虛擬內存,以得到最佳的存儲性能。

若是你的應用程序在佔用過多的內存,你就會遇到頻繁被換出內存(page-out)的狀況——即程序從內存進入到系統硬驅上的交換空間。你的服務器可能會進入到這個階段:花在管理內存分頁上的時間比花在運行應用程序上的時間還多——這種狀況被稱爲抖動(thrashing)。當你的電腦抖動時,性能就一落千丈。Vmstat能夠顯示平均的數據或實際樣本,能夠幫助你發覺大量耗用內存的程序和進程,以避免它們致使服務器運行起來如同蝸牛緩行。

Wireshark

Wireshark以前名爲Ethereal(並且如今仍常常這麼叫),是tcpdump的同類工具,不過它更爲高級,擁有先進得多的協議分析和報告功能。Wireshark既有GUI界面,又有外殼界面。若是你從事專業級的網絡管理工做,只能使用ethereal。而若是你在使用Wireshark/ethereal,我強烈建議閱讀Chris Sander所著的《實用數據包分析》(Practical Packet Analysis),該書深刻淺出地介紹瞭如何最充分地利用這款實用程序。

本文只是從整體上概述了一些Linux最有價值的系統監控程序。不過,若是你熟練掌握了這些程序,就爲成爲頂尖的 Linux系統管理員打下了基礎。

相關文章
相關標籤/搜索