MailVSR MailVSR 三分鐘搞定你的企業網站

系統監視器

系統監視器把常用的系統指令輸出直接呈現在頁面上,讓您不必登入終端機就能即時掌握伺服器的運作狀況。當服務回應變慢、負載異常升高,或需要確認某個程序是否還在跑、某個埠是否被佔用時,這一頁提供最直接的證據。它同時提供對異常程序送出終止訊號的功能,是排查問題時的即時工具。

什麼時候會用到這一頁:

  • 伺服器回應變慢,想知道是哪個程序吃掉 CPU 或記憶體
  • 某個服務明明有問題,卻不確定它「到底還在不在」
  • 某個埠被佔用,導致服務起不來
  • 想知道目前有哪些網路連線(誰連進來、連到哪裡)
  • 需要看目前實際套用的防火牆規則(而不只是設定畫面)
  • 要確認磁碟健康狀態(SMART)或硬體規格
  • 需要強制結束一個卡住、無法正常停止的程序

分頁與更新頻率

每個分頁對應一種指令輸出。畫面上方的頁籤由左至右為 top、ps、netstat、ifconfig、firewall、iftop、iotop、disk、hwlist、about。

只有目前開啟的分頁會持續更新,其他分頁不會在背景耗用資源——這是刻意的設計,避免這一頁本身成為負擔。各分頁的更新頻率如下:

分頁 顯示內容 更新頻率
top 即時程序與資源使用狀況 約 3 秒
ps 完整程序清單 約 5 秒
netstat 網路連線與監聽埠 約 5 秒
ifconfig 網路介面設定 約 5 秒
firewall 目前套用的防火牆規則 約 5 秒
iftop 即時網路流量 約 12 秒(每次取樣 5 秒)
iotop 磁碟 I/O 即時統計 約 12 秒(每次取樣 6 秒)
disk 磁碟使用量與健康狀態 約 30 秒
hwlist 硬體與核心模組清單 約 30 秒
about 本頁功能說明 靜態,不更新

iftop 與 iotop 需要先取樣才能算出流量,所以剛切到這兩個分頁時會顯示「樣本採集中…」,請稍候數秒。進入本頁時系統會在約 1 秒後先在背景取樣一次,因此正常情況下切過去就能直接看到結果,不必再等。

disk 與 hwlist 的內容變動不大,所以更新間隔較長(30 秒),這是刻意的設計,不是當掉。

各分頁逐一說明

top:整體負載與即時程序

對應指令為 top 的單次快照(批次模式),是「誰把機器吃滿」的第一站。畫面上方是整體狀況,下方是程序清單。

上半部(整體狀況)要看的四個地方:

  • load average(系統負載):三個數字分別是最近 1 分鐘/5 分鐘/15 分鐘的平均負載。判讀方式是與 CPU 核心數比較——例如 4 核心的機器,負載長期高於 4 就代表工作量已超出處理能力;短暫衝高但 15 分鐘的值正常,通常只是瞬間尖峰
  • Tasks:程序總數,以及 running/sleeping/stopped/zombie 各有多少。zombie 數量持續增加代表有程序的子程序沒有被回收,值得追查
  • %Cpu(s):CPU 時間的分配。us=使用者程序、sy=系統核心、wa=等待磁碟 I/O、id=閒置。wa 偏高(例如超過 20%)通常代表磁碟是瓶頸,這時請接著看 iotop
  • MiB Mem / MiB Swap:實體記憶體與置換空間的總量、已用、可用。Swap 使用量持續增加代表實體記憶體不足

下半部(程序清單)的欄位:

  • PID:程序編號,Kill 時要用的就是這個
  • USER:執行該程序的使用者(root、vmail、postfix 等)
  • PR/NI:優先權與 nice 值
  • VIRT/RES/SHR:虛擬記憶體、實際佔用的實體記憶體、共用記憶體
  • S:狀態(R 執行中、S 睡眠、D 不可中斷的睡眠通常是等 I/O、Z 殭屍)
  • %CPU/%MEM:佔用的 CPU 與記憶體百分比
  • TIME+:累計使用的 CPU 時間
  • COMMAND:程序名稱

判讀重點:先看 wa 與 load average 決定「是 CPU 問題還是 I/O 問題」,再從清單找出佔用最高的程序並記下 PID。

ps:完整程序清單

對應指令為 ps auxww。與 top 的差別在於:top 像即時排行榜,ps 則是這一刻所有程序的完整清單,而且命令列不會被截斷(可以看到完整的執行參數)。

適合用來回答「某個程序到底有沒有在跑」——例如您想確認 postfix、dovecot、clamd 是否活著,就在 ps 分頁用瀏覽器搜尋(Ctrl+F)該名稱。

主要欄位:USER(執行者)、PID、%CPU、%MEM、VSZ(虛擬記憶體)、RSS(實際實體記憶體)、TTY(終端機)、STAT(狀態碼)、START(啟動時間)、TIME(累計 CPU 時間)、COMMAND(完整命令列)。

STAT 常見值:S 睡眠、R 執行中、D 等待 I/O、Z 殭屍、T 已停止;後面若帶 < 表示高優先權、N 低優先權、l 多執行緒、s 為 session 領導者。看到 D 狀態的程序很多,通常代表磁碟或網路儲存有問題。

netstat:連線與監聽埠

對應指令為 netstat -tun——t 是 TCP、u 是 UDP、n 表示以數字顯示(不反查 DNS 與服務名稱,所以看起來會是 IP 與埠號而不是主機名)。

主要欄位:Proto(tcp/udp)、Recv-Q/Send-Q(接收與傳送佇列,持續不為 0 代表來不及處理)、Local Address(本機位址與埠,0.0.0.0:25 代表所有介面都在聽)、Foreign Address(對方位址)、State(連線狀態)。

State 常見值與意義:

  • LISTEN:正在等待連線(服務有正常起來)
  • ESTABLISHED:已建立、正在傳輸
  • TIME_WAIT:連線已結束、等待回收。數量很多是正常的(大量短連線的必然結果),但異常暴增可能代表連線被大量建立又中斷
  • SYN_SENT:已送出連線要求、等待對方回應。大量 SYN_SENT 通常代表對外連線有問題(對方沒回應或線路不通)

最常用的兩個時機:①確認服務有沒有正常監聽(例如 SMTP 的 25/465/587、IMAP 的 143/993、DNS 的 53);②找出佔用某個埠的程序,再回到 ps 用 PID 確認。

ifconfig:網路介面設定

對應指令為 ifconfig -a(-a 表示包含目前未啟用的介面)。

本機常見介面:eth0(對外,WAN)、eth1(對內,LAN)、lo(本機迴路 127.0.0.1),以及虛擬介面。

每個介面要看的欄位:inet(IPv4 位址)、netmask(網路遮罩)、broadcast、inet6(IPv6)、ether(MAC 位址)、UP/RUNNING(是否啟用且有連線)、以及 RX packets/TX packets/errors/dropped(收送封包數與錯誤數)。

判讀重點:介面顯示 UP 但沒有 RUNNING,通常代表網路線沒接或對端沒通;errors/dropped 持續增加代表線路或網卡有問題。要確認「對外 IP 是否正確」時就來這一頁對照(設定畫面在(網路設定 / WAN界面設定))。

firewall:目前實際套用的規則

對應指令為 nft list ruleset,也就是核心目前真正生效的 nftables 規則,不是設定畫面裡的內容。

排版是階層式的:table(表)→ chain(鏈)→ rule(規則)。一條規則通常長這樣:

ip saddr 203.0.113.8 tcp dport 25 drop

意思是「來源 IP 為 203.0.113.8、目的埠 25 的 TCP 連線,丟棄」。

最常用的時機:在「防火牆設定」改了規則、卻覺得沒生效時,用這一頁對照最準。若這裡看不到您剛加的規則,代表設定沒有真的套用,請回到(防火牆設定 / 手動防禦設定)確認儲存是否成功。規則的比對順序是由上而下、第一條符合的就決定結果。

iftop:即時網路流量

對應指令為 iftop,固定監看對外介面 eth0,取樣 5 秒。它回答的是「現在是誰把頻寬吃掉了」。

畫面每列是一組對談(本機 ↔ 對方),中間的箭頭代表方向:

  • =>:從本機送出到對方
  • <=:從對方接收進來

右側三個數字欄位是不同時間尺度的平均速率(2 秒、10 秒、40 秒),最後一欄是這段時間的累計量。判讀時要看 40 秒的平均值,只看 2 秒會被瞬間波動誤導。

因為取樣需要時間,剛切換過來會先顯示「樣本採集中…」。若系統未安裝此工具,畫面會顯示 iftop: command not available(這不影響其他分頁)。

iotop:磁碟 I/O 即時統計

對應指令為 iotop(批次模式、以 KB 為單位、取樣 2 次 × 3 秒),用來回答「是哪個程序在大量讀寫磁碟」。硬碟指示燈長亮、系統反應變慢、top 的 wa 偏高時,就來這一頁。

主要欄位:TID(執行緒/程序編號)、PRIO(優先權)、USER、DISK READ/DISK WRITE(讀寫速率)、SWAPIN(置換進來的比例)、IO>(等待 I/O 的時間比例)、COMMAND。

判讀重點:IO> 高的程序就是瓶頸來源。若排行前面的都是郵件或掃毒相關程序,通常代表正在處理大量郵件(正常);若是預期外的程序,請記下 TID 再到 ps 確認。同樣地,未安裝時會顯示 iotop: command not available。

disk:磁碟使用量與健康狀態

這一頁其實包含三個區塊,一次回答「空間夠不夠」與「硬碟健不健康」:

  1. 使用量(df -h):每個掛載點(分割區)的檔案系統、總容量、已用、可用、使用率百分比與掛載位置。空間不足是郵件伺服器最常見的故障原因之一,請養成定期查看的習慣,特別注意信箱與記錄所在的掛載點
  2. 裝置(fdisk -l):列出系統上實際存在的實體磁碟裝置與容量,用來確認硬碟有沒有被正確辨識
  3. 磁碟健康(smartctl):對每顆實體硬碟讀取 SMART 資訊,包含型號、序號、溫度與健康屬性。這是預測硬碟故障的關鍵資訊——若出現讀取錯誤、重分配磁區等異常值,建議儘早更換硬碟。虛擬機器的虛擬碟可能沒有 SMART 資料,此時該區塊會是空的或顯示工具不存在,屬正常現象
hwlist:硬體與核心模組清單

包含兩個區塊:

  1. 硬體清單(lshw -short):以簡表列出系統、主機板、CPU、記憶體、磁碟、網路卡等硬體。回報規格或評估擴充時使用
  2. 模組清單(lsmod):目前已載入的核心模組(Module/Size/Used by)。出現非預期的模組時可在此察覺;Used by 為 0 表示該模組目前沒有被使用
about:本頁說明

靜態的說明頁,列出本頁支援的指令種類,不會更新。

讀取失敗時顯示的訊息

若某個分頁的資料讀取失敗,畫面會顯示對應訊息:

分頁 失敗訊息
top 無法取得 top 資料
ps 無法取得 ps 資料
netstat 無法取得 netstat 資料
ifconfig 無法取得 ifconfig 資料
firewall 無法取得防火牆規則
iftop 無法取得 iftop 資料
iotop 無法取得 iotop 資料
disk 無法取得磁碟資訊
hwlist 無法取得硬體清單

看到這類訊息通常代表該指令在機器上無法執行或權限異常,請改看(系統日誌 / 主機日誌)找原因。另外 iftop/iotop/disk 的 SMART 區塊若顯示「command not available」或「not available」,代表該工具未安裝,不是系統故障。

終止程序(Kill)

top 與 ps 兩個分頁的上方都有 PID 欄位與「Kill」按鈕,用來強制結束卡住的程序。

  1. 在「輸入一個或多個 PID」欄位填入要終止的 PID(多個以空白、逗號或換行分隔,例如 1234 5678)
  2. 按「Kill」
  3. 成功時顯示「已對 PID :pids 送出 kill 訊號」(:pids 會代換為實際送出的 PID);失敗時顯示「Kill 失敗::msg」,:msg 是系統回報的原因

系統對此動作有兩層保護:

  • 格式檢查:每個 PID 都必須是正整數,格式不對會直接拒絕(不會送出任何訊號)
  • 不可終止 PID 1:PID 1 是系統的 init 程序,送出時會被拒絕並回報「cannot kill pid 1」

送出的是預設的終止訊號(不是強制殺除)。因此:程序收到後通常會自行收尾,但不一定會立刻消失——有些需要幾秒,有些會忽略訊號。若 Kill 後程序仍在,請確認 PID 是否正確,或改由(服務管理)重啟對應服務。

這個動作會以 root 權限執行,並寫入操作日誌,記錄為 KILL PID:...,可在(系統日誌 / 操作日誌)查到「誰在什麼時候終止了哪些程序」。

與系統儀表板的差別

兩者都會顯示伺服器狀態,但用途不同:

  • 系統儀表板:圖形化總覽,包含 CPU、記憶體與磁碟使用率橫條、系統服務燈號,以及網路流量與負載圖,適合每天開起來快速看一眼整體狀況
  • 系統監視器:原始指令輸出,資訊更細且更貼近底層,包含完整程序清單、連線明細、網路介面、防火牆規則、磁碟健康與硬體清單,並可終止程序,適合追查特定問題
  • 一句話區分:需要「一眼看出哪裡不對」時用儀表板;需要「看到原始資料並採取動作」時用系統監視器

常見情境與判讀

  • 「網站/信箱突然很慢」:top 先看 wa 與 load average 判斷是 CPU 還是 I/O → 若 wa 高,切 iotop 找大量讀寫的程序 → 再用 disk 確認是不是空間快滿
  • 「服務起不來」:netstat 看該埠是不是已被其他程序佔用 → 若是,ps 找出佔用的程序與 PID → 必要時用 Kill 結束它(並確認該程序不是系統關鍵服務)
  • 「信件一直卡住」:top 與 ps 確認 postfix/dovecot/掃毒程序是否還在 → 搭配(系統日誌 / SMTP日誌)看原因
  • 「懷疑硬碟要壞了」:disk 的磁碟健康區塊看 SMART 屬性 → 同時 df -h 確認空間 → 有異常請及早備份並更換
  • 「改過防火牆設定,想確認有沒有生效」:firewall 分頁對照實際規則;看不到剛加的規則時回到(防火牆設定 / 手動防禦設定)重做
  • 「被大量連線攻擊」:netstat 看 ESTABLISHED/SYN_SENT 的數量與來源;搭配(系統日誌 / 連線記錄)與(系統日誌 / 阻斷記錄)確認
  • 「要強制停掉卡住的程序」:先 ps 確認該 PID 對應的完整命令列確實是您要停的目標,再 Kill

注意事項

  • Kill 是立即且無法復原的動作,誤殺系統程序可能造成服務中斷(例如誤殺郵件或目錄服務程序)。送出前請先在 ps 確認 PID 對應的程序確實異常
  • 頁面上的程序清單與連線明細會隨時間變動,看到可疑項目時建議搭配(系統日誌 / 主機日誌)與(系統日誌 / 連線記錄)交叉確認,避免只憑一瞬間的畫面下判斷
  • 這一頁只讀取系統狀態,不會變更任何設定;唯一的例外是 Kill 動作
  • 本頁顯示的是「當下這一刻」的狀態,沒有歷史記錄;需要事後回溯請使用(系統日誌 / 主機日誌)
  • iftop 與 iotop 的數字是取樣估計值,短時間的起伏屬正常現象,請觀察一段時間的趨勢再判斷
  • disk 與 hwlist 的更新較慢(30 秒),剛切換過去時看到的可能是數十秒前的資料,這是正常現象