如果你想知道你的服務(wù)器正在做干什么,你就需要了解一些基本的命令,一旦你精通了這些命令,那你就是一個(gè) 專業(yè)的 Linux 系統(tǒng)管理員。
有些 Linux 發(fā)行版會(huì)提供 GUI 程序來進(jìn)行系統(tǒng)的監(jiān)控,例如 SUSE Linux 就有一個(gè)非常棒而且專業(yè)的工具 YaST,KDE 的 KDE System Guard 同樣很出色。當(dāng)然,要使用這些工具,你必須在服務(wù)器跟前進(jìn)行操作,而且這些 GUI 的程序占用了很多系統(tǒng)資源,所以說,盡管 GUI 用來做基本的服務(wù)器健康狀態(tài)監(jiān)測(cè)挺好,但如果你想知道真正發(fā)生什么,請(qǐng)關(guān)掉 GUI 開始命令行之旅吧。
你應(yīng)該只在需要的時(shí)候去啟動(dòng) GUI ,不用的時(shí)候關(guān)掉它。如果要讓服務(wù)器保持最佳性能,你應(yīng)該將 Linux 服務(wù)器的運(yùn)行級(jí)別 runlevel 設(shè)置為 3 ,就是控制臺(tái)模式,當(dāng)你需要圖形化桌面的時(shí)候使用 startx 命令來啟動(dòng)它。
如果你的服務(wù)器啟動(dòng)后就直接進(jìn)入圖形界面,你需要修改配置 /etc/inittab 找到 initdefault 一樣,將 id:5:initdefault 修改為 id:3:initdefault。
如果你沒找到 /etc/inittab 文件,那就創(chuàng)建一個(gè)新的,文件內(nèi)容增加 id:3 這么一行。這樣下次服務(wù)器啟動(dòng)的時(shí)候就不會(huì)進(jìn)入圖形界面。如果你不想等到服務(wù)器重啟的時(shí)候才生效,你可以執(zhí)行 init 3 這個(gè)命令。
一旦你的服務(wù)器是在控制臺(tái)模式下運(yùn)行,你就可以開始我們接下來的內(nèi)容。
iostat
iostat 命令用來顯示存儲(chǔ)子系統(tǒng)的詳細(xì)信息,通常用它來監(jiān)控磁盤 I/O 的情況。要特別注意 iostat 統(tǒng)計(jì)結(jié)果中的 %iowait 值,太大了表明你的系統(tǒng)存儲(chǔ)子系統(tǒng)性能低下。
meminfo 和 free
Meminfo 可讓你獲取內(nèi)存的詳細(xì)信息,你可以使用 cat 和 grep 命令來顯示 meminfo 信息:
另外你可以使用 free 命令來顯示動(dòng)態(tài)的內(nèi)存使用信息,free 只是給你大概的內(nèi)存信息,而 meminfo 提供的信息更加詳細(xì)。例如在 oschina 上的 free 命令執(zhí)行結(jié)果:

mpstat
mpstat mpstat是MultiProcessor Statistics的縮寫,是實(shí)時(shí)系統(tǒng)監(jiān)控工具。其報(bào)告與CPU的一些統(tǒng)計(jì)信息,這些信息存放在/proc/stat文件中。在多CPUs系統(tǒng)里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。
再來看看 oschina 上的 mpstat 命令執(zhí)行結(jié)果:

關(guān)于 mpstat 執(zhí)行結(jié)果中的參數(shù)意思請(qǐng)參考此貼。
netstat
Netstat 和 ps 命令類似,是 Linux 管理員基本上每天都會(huì)用的工具,它顯示了大量跟網(wǎng)絡(luò)相關(guān)的信息,例如 socket 的使用、路由、接口、協(xié)議、網(wǎng)絡(luò)等等,下面是一些常用的參數(shù):
1 | -a Show all socket information |
2 | -r Show routing information |
3 | -i Show network interface statistics |
4 | -s Show network protocol statistics |
nmon
Nmon, 是 Nigel's Monitor 的縮寫,是一個(gè)使用很普遍的開源工具,用以監(jiān)控 Linux 系統(tǒng)的性能。Nmon 監(jiān)控多個(gè)子系統(tǒng)的性能數(shù)據(jù),例如處理器的使用率、內(nèi)存使用率、隊(duì)列、磁盤I/O統(tǒng)計(jì)、網(wǎng)絡(luò)I/O統(tǒng)計(jì)、內(nèi)存頁處理和進(jìn)程信息。Nmon 也提供了一個(gè)圖形化的工具:

要運(yùn)行 nmon,你可以在命令行中啟動(dòng)它,然后選擇要監(jiān)控的子系統(tǒng),這些子系統(tǒng)都對(duì)應(yīng)有一個(gè)快捷鍵,例如輸入 c 可查看 CPU 信息,m用于查看內(nèi)存,d用來查看磁盤信息等,你也可以使用 -f 命令將 nmon 的執(zhí)行結(jié)果保存到一個(gè) CSV 文件中,便于日后分析。
在每日的監(jiān)控工作中,我發(fā)現(xiàn) nmon 是我最常用的工具。
pmap
pmap 命令用來報(bào)告每個(gè)進(jìn)程占用內(nèi)存的詳細(xì)情況,可用來看是否有進(jìn)程超支了,該命令需要進(jìn)程 id 作為參數(shù)。
ps 和 pstree
ps 和 pstree 命令是 Linux 系統(tǒng)管理員最好的朋友,都可以用來列表正在運(yùn)行的所有進(jìn)程。ps 告訴你每個(gè)進(jìn)程占用的內(nèi)存和 CPU 處理時(shí)間,而 pstree 顯示的信息沒那么詳細(xì),但它以樹形結(jié)構(gòu)顯示進(jìn)程之間的依賴關(guān)系,包括子進(jìn)程信息。一旦發(fā)現(xiàn)某個(gè)進(jìn)程有問題,你可以使用 kill 來殺掉它。
sar
sar 程序是系統(tǒng)監(jiān)控工具里的瑞士軍刀。該程序包含三個(gè)工具:sar 用來顯示數(shù)據(jù),sa1 和 sa2 用來收集數(shù)據(jù)并保存。sar 可用來顯示 CPU 使用率、內(nèi)存頁數(shù)據(jù)、網(wǎng)絡(luò) I/O 和傳輸統(tǒng)計(jì)、進(jìn)程創(chuàng)建活動(dòng)和磁盤設(shè)備的活動(dòng)詳情。sar 和 nmon 最大的不同就是 sar 跟適合用作長(zhǎng)期的監(jiān)控,而 nmon 可以讓你快速的了解系統(tǒng)當(dāng)前狀態(tài)。
strace
strace 經(jīng)常被認(rèn)為是程序員調(diào)試的工具,但不止如此。它可以記錄進(jìn)程進(jìn)行系統(tǒng)調(diào)用的詳情,因此它也是一個(gè)非常好的診斷工具,例如你可以使用它來找出某個(gè)程序正在打開某個(gè)配置文件。
Strace 也有一個(gè)缺陷,但它在跟蹤某個(gè)進(jìn)程時(shí)會(huì)讓該進(jìn)程的性能變得非常差,因此請(qǐng)謹(jǐn)慎使用。
tcpdump
Tcpdump 是一個(gè)簡(jiǎn)單、可靠的網(wǎng)絡(luò)監(jiān)控工具,用來做基本的協(xié)議分析,看看那些進(jìn)程在使用網(wǎng)絡(luò)以及如何使用網(wǎng)絡(luò)。當(dāng)然,如果你要獲取跟詳細(xì)的信息,你應(yīng)該使用 Wireshark (下面我們會(huì)介紹).
top
top 命令顯示當(dāng)前的活動(dòng)進(jìn)程,默認(rèn)它是按消耗 CPU 的厲害程度進(jìn)行排序,每5秒鐘刷新一次列表,你也可以選擇不同的排序方式,例如 m 是按內(nèi)存占用方式進(jìn)行排序的快捷鍵。
uptime
uptime 命令告訴你這臺(tái)服務(wù)器從開機(jī)啟動(dòng)到現(xiàn)在已經(jīng)運(yùn)行了多長(zhǎng)時(shí)間了。同時(shí)也包含了從啟動(dòng)到現(xiàn)在服務(wù)器的平均負(fù)載情況,看看 oschina 的數(shù)據(jù):

我已經(jīng)忘了上次是為什么重啟機(jī)器了,好像是換了個(gè)機(jī)柜。
vmstat
你可以使用 vmstat 來監(jiān)控虛擬內(nèi)存,一般 Linux 上的開發(fā)者喜歡使用虛擬內(nèi)存來獲得最佳的存儲(chǔ)性能。該命令報(bào)告關(guān)于內(nèi)核線程、虛擬內(nèi)存、磁盤、陷阱和 CPU 活動(dòng)的統(tǒng)計(jì)信息。由 vmstat 命令生成的報(bào)告可以用于平衡系統(tǒng)負(fù)載活動(dòng)。系統(tǒng)范圍內(nèi)的這些統(tǒng)計(jì)信息(所有的處理器中)都計(jì)算出以百分比表示的平均值,或者計(jì)算其總和。
在 oschina 上執(zhí)行 vmstat 的結(jié)果:

Wireshark
Wireshark, 前身是 Ethereal ,是一個(gè)網(wǎng)絡(luò)協(xié)議檢測(cè)程序,讓您經(jīng)由程序抓取運(yùn)行的網(wǎng)站的相關(guān)資訊,包括每一封包流向及其內(nèi)容、資訊可依操作系統(tǒng)語系看出,方便查看、監(jiān)控TCP session動(dòng)態(tài)等等.

這里羅列的是大多數(shù)最有價(jià)值的 Linux 監(jiān)控程序,當(dāng)然,你可能還會(huì)使用其他的工具,不妨跟大家分享下。
英文原文 hp.com OSCHINA 原創(chuàng)翻譯