對於每一個系統管理員或網絡管理員來講,天天要監控和調試 Linux 系統性能問題都是很是困難的工做。我已經有5年 Linux 管理員的工做經歷,知道如何監控系統使其保持正常運行。爲此,咱們編寫了對於 Linux/Unix 系統管理員很是有用的而且最經常使用的20個命令行系統監視工具。這些命令能夠在全部版本的 Linux 下使用去監控和查找系統性能的實際緣由。這些監控命令足夠你選擇適合你的監控場景。前端
top 命令是性能監控程序,它能夠在不少 Linux/Unix 版本下使用,而且它也是 Linux 系統管理員常用的監控系統性能的工具。Top 命令能夠按期顯示全部正在運行和實際運行而且更新到列表中,它顯示出 CPU 的使用、內存的使用、交換內存、緩存大小、緩衝區大小、過程控制、用戶和更多命令。它也會顯示內存和 CPU 使用率太高的正在運行的進程。當咱們對 Linux 系統須要去監控和採起正確的行動時,top 命令對於系統管理員是很是有用的。讓咱們看下 top 命令的實際操做。linux
# top
ios
vmstat 命令是用於顯示虛擬內存、內核線程、磁盤、系統進程、I/O 模塊、中斷、CPU 活躍狀態等更多信息。在默認的狀況下,Linux 系統是沒有 vmstat 這個命令的,若是你要使用它,必須安裝一個包名叫 sysstat 的程序包。命令格式經常使用用法以下:web
# vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0
lsof 命令對於不少 Linux/Unix 系統均可以使用,主要以列表的形式顯示打開的文件和進程。數據庫
打開的文件主要包括磁盤文件、網絡套接字、管道、設備和進程。使用這個命令的主要緣由是一個一個盤不能卸載而且顯示文件正在使用或者打開的錯誤信息。這個命令很容易看出哪些文件正在使用。這個命令最經常使用的格式:小程序
# lsofCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 104,2 4096 2 / init 1 root rtd DIR 104,2 4096 2 / init 1 root txt REG 104,2 38652 17710339 /sbin/init init 1 root mem REG 104,2 129900 196453 /lib/ld-2.5.so init 1 root mem REG 104,2 1693812 196454 /lib/libc-2.5.so init 1 root mem REG 104,2 20668 196479 /lib/libdl-2.5.so init 1 root mem REG 104,2 245376 196419 /lib/libsepol.so.1 init 1 root mem REG 104,2 93508 196431 /lib/libselinux.so.1 init 1 root 10u FIFO 0,17 953 /dev/initctl
tcpdump 是一種使用最普遍的命令行網絡數據包分析器或數據包嗅探程序,主要用於捕獲和過濾 TCP/IP 包收到或者轉移在一個網絡的特定藉口信息。它也提供了一個選項參數去保存將捕獲的包在一個文件中用於之後分析使用,tcpdump 幾乎在全部的 Linux 版本中都是可用的。緩存
# tcpdump -i eth0tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648 22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648 22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347
netstat 命令是一個監控網絡數據包傳入和傳出的統計界面的命令行工具。它對於許多系統管理員去監控網絡性能和解決網絡相關問題是一個很是有用的工具。安全
# netstat -a | more
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 0 *.* *.* CLOSED
tcp4 0 0 *.* *.* CLOSED
tcp 0 0 *.* *.* CLOSED
tcp4 0 0 *.* *.* CLOSED
tcp 0 0 *.* *.* CLOSED
tcp4 0 0 *.* *.* CLOSED
tcp4 0 0 loopback.32848 loopback.32849 ESTABLISHED
tcp4 0 0 loopback.32849 loopback.32848 ESTABLISHED
tcp 0 0 *.ftp *.* LISTEN
tcp4 0 0 *.ssh *.* LISTEN
tcp4 0 0 *.smtp *.* LISTEN
tcp4 0 0 loopback.32897 loopback.32898 ESTABLISHED
tcp4 0 0 loopback.32898 loopback.32897 ESTABLISHED
tcp4 0 0 *.sunrpc *.* LISTEN
tcp 0 0 *.smux *.* LISTEN
tcp4 0 0 loopback.32803 loopback.33149 ESTABLISHED
tcp4 0 0 loopback.33149 loopback.32803 ESTABLISHED
tcp4 0 0 lc4fis22p.33661 lc4fis15.fhdba01c ESTABLISHED
tcp4 0 0 loopback.32848 loopback.33152 ESTABLISHED
tcp4 0 0 loopback.33152 loopback.32848 ESTABLISHED服務器
htop 是一個更加先進的交互式的實時監控工具。htop 與 top 命令很是類似,可是他有一些很是豐富的功能,如用戶友好界面管理進程、快捷鍵、橫向和縱向進程等更多的。htop 是一個第三方工具並不包括在 Linux 系統中,你須要使用包管理工具進行安裝。網絡
# htop
iotop 也是和 top 和 htop 命令類似,可是它會有一個報告功能去監控和顯示實時的磁盤 I/O 輸入和輸出和程序進程。這個工具對於查找精確的高的磁盤讀/寫過程是很是有用的。
# iotop
iostat 是收集和展現系統輸入和輸出存儲設備統計的簡單工具。這個工具一般用於查找存儲設備性能問題,包括設備、本地磁盤、例如 NFS 遠程磁盤。
# iostatLinux 2.6.18-238.9.1.el5 (tecmint.com) 09/13/2012 avg-cpu: %user %nice %system %iowait %steal %idle 2.60 3.65 1.04 4.29 0.00 88.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d0 17.79 545.80 256.52 855159769 401914750 cciss/c0d0p1 0.00 0.00 0.00 5459 3518 cciss/c0d0p2 16.45 533.97 245.18 836631746 384153384 cciss/c0d0p3 0.63 5.58 3.97 8737650 6215544 cciss/c0d0p4 0.00 0.00 0.00 8 0 cciss/c0d0p5 0.63 3.79 5.03 5936778 7882528 cciss/c0d0p6 0.08 2.46 2.34 3847771 3659776
IPTraf 是一個基於開源的 Linux 系統實時網絡(IP 網絡)監測的工具。它能收集到各類各樣的信息,如經過網絡對 IP 流量監測,包括 TCP 標誌信息、ICMP 詳細細節、TCP/UDP 流量故障、TCP 鏈接的數據包和拜恩計數。而且它還收集 TCP,UDP,ICMP,IP,非 IP,IP 校驗錯誤,界面活性等通常信息和詳細信息的接口統計數據。
Psacct 或者 Acct 是用於監測每一個用戶對系統的活躍狀態的一個很是有用的工具。在後臺有兩個守護進程在運行,一個是密切關注系統上每一個用戶的總體活動,另外一個進程關注有哪些資源被它們消耗。
這個工具對於系統管理員是很是有用的去跟蹤每一個用戶的活動,能夠知道用戶正在作什麼,發出了什麼樣的命令,佔用了多少資源,多長時間活躍在系統上。
這是一個免費的開源的基於 web 程序的自動監控和管理系統進程、程序、文件、目錄、權限、校驗文件系統。它監控的服務包括 Apache、MYSQL、Mail、FTP、Nginx 等等。系統狀態是能夠從命令行或者本身的網絡接口來查看。
NetHogs 是一個開源的漂亮的小程序(相似於 Linux 上面的 top 命令),在您的系統上保持每一個進程的網絡活動狀態。它也保持了一個程序或者應用實時的網絡流量帶寬使用狀況。
iftop 是另外一個基於終端的開源的系統監測工具,主要功能是經過你本身系統上的網絡接口顯示一個常常更新的網絡帶寬利用率的列表(即源主機和目的主機)。iftop 監控的是網絡的使用狀況,而 top 監控的是 CPU 的使用狀況。iftop 監視一個選定的接口而且顯示兩臺主機之間當前寬帶的使用狀況。
Monitorix 是一個儘量多的在 Linux/Unix 上一個輕量級監控工具,主要設計是監控正在運行的系統和網絡資源。它有一個內置的 HTTP web 服務去按期收集系統和網絡信息並顯示成圖片。它能夠監視系統的平均負載使用、內存的分配、磁盤驅動器、系統服務、網絡端口、郵件統計(Sendmail、Postfix、Dovecot 等等)、MYSQL 數據庫等等更多的服務。它的主要目的是監控整個系統的性能,而且有助於監測故障、瓶頸、異常活動等情況。
Arpwatch是一種用來監視 Linux 網絡的以太網的網絡流量的地址解析(網絡地址轉換)的一個程序。它一直隨着網絡時間戳的變化監視以太網流量和產生日誌的 IP 和 MAC 地址對。當一個 IP 地址或 MAC 地址對發生變化的時候,它會發送電子郵件通知管理員。
而且它在檢測 ARP 攻擊是很是有用的。
Suricata 是一個高性能的開源的網絡安全與入侵檢測與預防 Linux、FreeBSD、Windows 等操做系統的監控工具。它是一個非營利基金 OISF(Open Information Security Foundation)擁有的。
VnStat PHP 是一個 web 前端應用最流行的社交工具叫「vnstat」。 VnStat PHP 使用了很好的圖形模式監控網絡流量的使用狀況。它顯示了每時、天天、每個月的總結報告中的網絡流量使用狀況。
Nagios 是一個領先的開源的強大的監控系統,網絡/系統管理員在他們影響主要業務流程以前識別和解決服務器相關的問題。Nagios 能夠監控遠程 Linux、Windows、開關、單窗口的路由器和打印機。它能顯示你的網絡和服務器關鍵的告警,有利於在錯誤反生以前幫助你解決問題。
Nmon(即奈吉爾性能監視器)工具用來監視 Linux 系統的全部資源包括:CPU、內存、磁盤使用率、網絡上的進程、NFS、內核等等。這個工具備兩個模式:即在線模式和捕捉模式。在線模式適用於實時監控,捕捉模式用於存儲輸出爲 CSV 格式後的處理。
Collectl 是另外一個功能強大的基於命令行的監控工具,它可用於收集有關係統資源的信息,包括 CPU 使用率、內存、網絡、節點、進程、NFS、TCP 套接等等。
咱們想知道你使用什麼樣的監控程序來監控你的服務器性能?若是咱們錯過你想要的任何工具,請經過評論告知咱們,而且不要忘記分享他。