每個Linux管理員應該知道的20個Linux系統監視工具

    需要監視Linux服務器的性能?試試這些內置的命令和一些附加的工具吧。大多數Linux發行版都集成了一些監視工具。這些工具可以獲取有關係統活動的信息的詳細指標。通過這些工具,你可以發現產生系統性能問題可能存在原因。下面討論的是一些最基本的命令,它涉及到系統分析和調試服務器等一些問題,如:
1.    找出系統瓶頸問題.
2.    磁盤 (儲存) 瓶頸問題.
3.    CPU和內存瓶頸問題.
4.    網絡瓶頸問題.
# 1: top – 查看活動進程的命令
TOP工具能夠實時顯示系統中各個進程的資源佔用狀況。默認情況下,它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU/內存的使用情況和執行時間對任務進行排序,並每五秒鐘更新一次。
 
常用的快捷鍵
Top命令爲我們提供了很多有用的快捷鍵,如:
快捷鍵    用法
t             切換顯示進程和CPU狀態信息。
m           切換顯示進程和CPU狀態信息。
A            分類顯示各種系統資源的消耗情況。可用於快速識別系統的性能要求極高的任務。
o            改變顯示項目的順序。
r            重新設置進程的優先級別。(系統提示用戶輸入需要改變的進程PID以及需要設置的優先級值。)
k            終止一個進程。(系統將提示用戶輸入需要終止的進程PID)
s            改變刷新的時間間隔。
u            查看指定用戶的進程。   
=> Related:要了解更多關於top的用法,請參考系統幫助文檔。
# 2: vmstat – 系統活動、硬件以及系統信息
這個命令用來報告關於內核線程、虛擬內存、磁盤、陷阱和CPU活動的統計信息。
# vmstat 3                                                           
輸出樣例:
procs ———–memory———- —swap– —–io—- –system– —–cpu——           
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st            
0  0      0 2540988 522188 5130400    0    0     2    32    4    2  4  1 96  0  0          
1  0      0 2540988 522188 5130400    0    0     0   720 1199  665  1  0 99  0  0          
0  0      0 2540956 522188 5130400    0    0     0     0 1151 1569  4  1 95  0  0          
0  0      0 2540956 522188 5130500    0    0     0     6 1117  439  1  0 99  0  0          
0  0      0 2540940 522188 5130512    0    0     0   536 1189  932  1  0 98  0  0          
0  0      0 2538444 522188 5130588    0    0     0     0 1187 1417  4  1 96  0  0          
0  0      0 2490060 522188 5130640    0    0     0    18 1253 1123  5  1 94  0  0  
        

顯示內存使用情況:
# vmstat –m                                                         
=> Related: 要了解更多關於vmstat的用法,請參考系統幫助文檔。
# 3: w – 找到已登陸的用戶並且查看他們做了什麼操作
W命令用來顯示機器上最近登陸的用戶信息以及他們的進程信息。
# w username                                                         
# w vivek                                                            
輸出樣例:
17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24                         
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT                        
root     pts/0    10.1.3.145       14:55    5.00s  0.04s  0.02s vim /etc/resolv.conf        
root     pts/1    10.1.3.145       17:43    0.00s  0.03s  0.00s w               
            
# 4: uptime – 系統已運行的時間
Uptime命令可以查看系統已經運行了多長時間。截止當前時間日期,系統已經運行了多長時間,當前登錄的用戶有哪些,已經在過去的1,5,15分鐘,系統的平均負載值情況。 
# uptime                                                             
輸出樣例:
18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00           
1通常被認爲是最佳的負載值。系統負載值根據系統的不同而不同。對於單CPU的系統,負載值在1-3爲正常,SMP的系統,負載值在6-10之間也是可以接受的。(看具體的情況)
# 5: ps – 顯示進程
ps命令用來報告當前進程的快照。要選擇所有進程,使用-A或-e選項:
# ps –A                                                             
輸出樣例:
 
Ps命令跟top相似,但ps爲我們提供了更多的信息。
以長格式顯示輸出:
# ps –Al                                      
查看線程:(LWP和NLWP):
# ps –AlFH                                             
To See Threads After Processes:
# ps –AlLm                                    
在服務器上打印出所有進程:
# ps ax                                        
# ps axu                                       
打印出進程樹:
# ps –ejH                                     
# ps axjf                                      
# pstree                                       
See Every Process Running As User Vivek:

# ps -U vivek -u vivek u                       
設置以用戶定義的格式輸出:

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm  
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm    
# ps -eopid,tt,user,fname,tmout,f,wchan                           
只顯示lighttpd的進程樹:

# ps -C lighttpd -o pid=                                          
Or
# pgrep lighttpd                                                  
Or
# pgrep -u vivek php-cgi                                          
顯示pid爲55977的進程名:

# ps -p 55977 -o comm=                                            
找出最耗費內存的前10個進程:

# ps -auxf | sort -nr -k 4 | head -10                             
找出最耗費CPU的前10個進程:

# ps -auxf | sort -nr -k 3 | head -10                             
# 6: free – 查看內存的使用情況
free指令會顯示內存的使用情況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩衝區等。
參數:
 -b    以Byte爲單位顯示內存使用情況。 
 -k    以KB爲單位顯示內存使用情況。 
 -m   以MB爲單位顯示內存使用情況。 
 -o   不顯示緩衝區調節列。 
 -s    <間隔秒數>  持續觀察內存使用狀況。 
 -t    顯示內存總和列。 
 -V   顯示版本信息。
# free                                                            
輸出樣例:
            total       used       free     shared    buffers     cached 
Mem:      12302896    9739664    2563232          0     523124    5154740
-/+ buffers/cache:    4061800    8241096                                 
Swap:      1052248          0    1052248            
                     
free的輸出一共有四行,第四行爲交換區的信息,分別是交換的總量(total),使用量(used)和有多少空閒的交換區(free)。
第二行和第三行是比較讓人迷惑的。這兩行都是說明內存使用情況的。第一列是總量(free),第二列是使用量(free),第三列是可用量(free)。第一行的輸出時從操作系統(OS)來看的。也就是說,從OS的角度來看,計算機上一共有:
•    999212KB(缺省時free的單位爲KB)物理內存,即FO[2][1];
•    在這些物理內存中有967476KB(即FO[2][2])被使用了;
•    還用31736KB(即FO[2][3])是可用的;
=> Related: 要了解更多關於free的東西,請百度或者google之。
# 7: iostat – 監視CPU平均負載值,I/O狀態
該命令用於報告CPU和輸入/輸出設備,分區和網絡文件系統(NFS)的詳細統計數據。
# iostat                                                                  
輸出樣例:

 


基本使用:



# iostat -d -k 1 10



參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block爲單位的列強制使用Kilobytes爲單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。



# iostat -d -k 1 10



 

Related: 要了解更多關於iostat的東西,請查看iostat的幫助文檔。
# 8: sar - 收集和報告系統狀態信息
Sar 命令是用來收集,報告和保存系統活動信息的。
Sar 把自已收集的數據以二進制格式保存在[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\[LC3U)F{0XCAB)[email protected][/img]ar/log[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\{)_G62“_[8)(8ND1X0_M7L.gif[/img]裏
使用 sar -d 可以得到當天磁盤活動的情況彙總
sar -n  DEV 則能給出網絡接口的統計信息
sar -A 可以報告所有的信息
sar 適用於快速粗略瞭解歷史信息。
sar 命令行的常用格式: sar [options] [-o file] t [n]
options 爲命令行選項,sar命令的選項很多,下面只列出常用選項: 
-A:所有報告的總和。        
-u:CPU利用率        
-v:進程、I節點、文件和鎖表狀態。        
-d:硬盤使用報告。        
-r:沒有使用的內存頁面和硬盤塊。        
-g:串口I/O的情況。 
-b:緩衝區使用情況。 
-a:文件讀寫情況。 
-c:系統調用情況。 
-R:進程的活動情況。 
-y:終端設備活動情況。 
-w:系統交換活動。 
Related: 要了解更多關於sar的東西,請自行搜索相關資料。

# 9: mpstat – 實時系統監視工具
mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。
下面只介紹mpstat與CPU相關的參數,mpstat的語法如下:
Usage: mpstat [ options… ] [ <interval> [ <count> ] ]             
Options are:                                                        
[ -P { <cpu> | ALL } ] [ -V ]                                       

顯示每個進程對CPU的平均利用率:
# mpstat -P ALL                                                     
輸出樣例:
Linux 2.6.18-128.1.14.el5 (www03.nixcraft.in)         06/26/2009                   
06:48:11 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s
06:48:11 PM  all    3.50    0.09    0.34    0.03    0.01    0.17    0.00   95.86   1218.04
06:48:11 PM    0    3.44    0.08    0.31    0.02    0.00    0.12    0.00   96.04   1000.31
06:48:11 PM    1    3.10    0.08    0.32    0.09    0.02    0.11    0.00   96.28     34.93
06:48:11 PM    2    4.16    0.11    0.36    0.02    0.00    0.11    0.00   95.25      0.00
06:48:11 PM    3    3.77    0.11    0.38    0.03    0.01    0.24    0.00   95.46     44.80
06:48:11 PM    4    2.96    0.07    0.29    0.04    0.02    0.10    0.00   96.52     25.91
06:48:11 PM    5    3.26    0.08    0.28    0.03    0.01    0.10    0.00   96.23     14.98
06:48:11 PM    6    4.00    0.10    0.34    0.01    0.00    0.13    0.00   95.42      3.75
06:48:11 PM    7    3.30    0.11    0.39    0.03    0.01    0.46    0.00   95.69     76.89

#10: pmap – 查看進程使用內存的情況
pmap命令用來報告進程使用對於的相應內存的情況。使用下面命令可以查出某些內存瓶頸問題的原因。
# pmap -d PID                           
顯示進程號爲47394的進程所用內存的信息:
# pmap -d 47394                                                             
輸出樣例:
47394:   /usr/bin/php-cgi                                                   
Address           Kbytes Mode  Offset           Device    Mapping           
0000000000400000    2584 r-x– 0000000000000000 008:00002 php-cgi           
0000000000886000     140 rw— 0000000000286000 008:00002 php-cgi           
00000000008a9000      52 rw— 00000000008a9000 000:00000   [ anon ]        
0000000000aa8000      76 rw— 00000000002a8000 008:00002 php-cgi           
…..                                                                       
……                                                                      
00002af8d4b17000  768000 rw-s- 0000000000000000 000:00009 zero (deleted)    
00007fffc95fe000      84 rw— 00007ffffffea000 000:00000   [ stack ]       
ffffffffff600000    8192 —– 0000000000000000 000:00000   [ anon ]        
mapped: 933712K    writeable/private: 4304K    shared: 768000K              

最後一行非常重要:
mapped: 933712K total amount of memory mapped to files.
writeable/private: 4304K the amount of private address space.
shared: 768000K the amount of address space this process is sharing with others.
#11 & #12 : netstat 和 ss – 查看網絡情況
netstat命令顯示網絡連接,路由表,網絡接口統計,僞裝連接,組播成員身份。ss命令類似netstat命令的信息。關於ss和netstat命令,您可以參閱系統幫助文檔或者互聯網上的資源。
#13: iptraf – 實時網絡狀況監視工具
iptraf是一款彩色的交互式的IP局域網監控工具。這是一個基於ncurses的IP LAN監視工具,它會統計網絡中產生的各種數據,包括TCP信息,UDP連接數,ICMP和OSPF信息,以太網負載信息,節點統計,IP校驗和錯誤,以及其他信息。並且提供:
Network traffic statistics by TCP connection
IP traffic statistics by network interface
Network traffic statistics by protocol
Network traffic statistics by TCP/UDP port and by packet size
Network traffic statistics by Layer2 address
 
上圖是General interface statistics: IP traffic statistics by network interface
 
上圖是網絡連接中建立的TCP連接信息的統計
#14: tcpdump – 網絡狀況分析工具
tcpdump用來抓包的一個的簡單命令。但是,要使用該工具,你需熟悉TCP /IP協議。例如:顯示網絡中有關DNS的信息,請輸入:
# tcpdump -i eth1 ‘udp port 53’                                           

顯示去往202.54.1.5的所有ftp會話信息:
# tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20’                     

顯示去往192.168.1.5的所有HTTP會話信息:
# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’                

使用Wireshark查看tcpdump抓包文件的詳細信息,輸入:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80                 
#15: strace – 系統調用工具
strace是Linux環境下的一款程序調試工具,用來監察一個應用程序所使用的系統呼叫及它所接收的系統信息。strace是一個有用的小工具,它可以通過跟蹤系統調用來讓你知道一個程序在後臺所做的事情。Strace是一個基礎的調試工具,在大多數 Linux系 統上默認已經安裝;但是即便你不是在跟蹤一個問題的時候它也是一個極好的軟件。它能告訴你很多關於一個Linux程序怎樣工作的信息。
#16: /Proc 文件系統
Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。幾個例子:
# cat /proc/cpuinfo                                                        
# cat /proc/meminfo                                                        
# cat /proc/zoneinfo                                                       
# cat /proc/mounts                                                         
Related: 要更詳細地去了解/proc文件系統,你可以去查看官方文檔
#17: Nagios – 服務器和網絡信息監視工具
Nagios是一款很流行的開源系統和網絡監控應用軟件。你可以很輕鬆地用它監控所有的主機,網絡設備和服務。在系統或服務狀態異常時會第一時間通知網站運維人員(發出郵件或短信報警),在狀態恢復正常後發出郵件或短信通知。
#18: Cacti -基於WEB的監視工具
Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。CACTI軟件Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。
#19: KDE System Guard – 圖形化的系統監視工具
KDE System Guard (KSysguard)是KDE的任務管理和性能監控工具。它採用client/server架構,可以監控本機也可以監控遠端主機。
一篇51CTOblog的博文,對KDE System Guard的介紹很詳細,有興趣的朋友去看看。
http://linuxshow.blog.51cto.com/1572053/371657
 
#20: Gnome System Monitor – 圖形化系統監視工具
它可以顯示系統信息,監視系統進程,系統資源負載情況,以及文件系統。你也可以用它來提高系統性能。儘管功能不像KDE System Guard那麼強大,但作爲Gnome桌面環境的圖形化性能分析工具,Gnome System Monitor可以圖形化顯示性能相關係統資源用於發現可能的峯值和瓶頸。產生的所有統計信息都是實時,要想做長時間的性能分析需使用其它工具來完成。
功能:
    Displays various basic information about the computer’s hardware and software.
    Linux Kernel version
    GNOME version
    Hardware
    Installed memory
    Processors and speeds
    System Status
    Currently available disk space
    Processes
    Memory and swap space
    Network usage
    File Systems
    Lists all mounted filesystems along with basic information about each.
 
其他工具:
nmap – 掃描主機的端口開放情況.
lsof - 列出系統當前打開的文件,網絡連接以及更多信息。
ntop web based tool – Ntop是一款監控網絡流量工具,它顯示的網絡狀況更加直觀、詳細。Ntop甚至可以列出每個節點計算機的網絡帶寬利用率。它是一個靈活的、功能齊全的,用來監控和解決局域網問題的工具;可以自動從網絡中識別有用的信息;將截獲的數據包轉換成易於識別的格式;對網絡環境中通信失敗的情況進行分析;探測網絡通信的時間和過程等。
Conky - Conky是x-window下,一款免費的,輕量級系統監控的工具。它能夠監控許多系統環境的狀態,其中包括的CPU,內存,交換空間,磁盤存儲,溫度,進程,網絡接口,電池電量,系統消息,電子郵件收件箱等。
GKrellM – 它來用於監測CPU狀態,內存,硬盤,網絡接口,本地和遠程郵箱,以及其他的東西等。
vnstat – vnstat是一個基於控制檯的網絡流量監控軟件,它會保持每月,每天,每小時,監視並記錄所選定網絡接口的網絡通信狀況。
htop – htop是一個增強版本的top,同時也是一個交互式進程查看器,它可以以樹狀結構來顯示進程列表。
mtr – mtr在單一的網絡診斷工具上,結合了traceroute和ping程序的功能。

翻譯的過程中,對文章中的某些地方進行了小小的改動。
您可以在回帖中寫上您比較喜歡的系統監視工具哦。  ^_^
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章