iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
IT Operation

大學生的VirtualBox虛擬機與Ubuntu實戰30天系列 第 27 篇

Day 27|系統健康度維運:掌握 CPU、記憶體與磁碟空間監控

  • 分享至 

  • xImage
  •  

在前面的篇章中,我們依序完成了常駐服務部署、網路防火牆邊界防護(UFW)以及伺服器遠端存取加固(純金鑰 SSH 認證)。至此,這台 Linux 主機已具備了對外提供服務的基礎安全與架構。

然而,伺服器上線後並非一勞永逸。背景運行的程序是否佔用過多運算資源?資料庫或日誌檔案是否正悄悄吃滿硬碟空間?系統是否因為記憶體耗盡而即將面臨崩潰?在日常維運中,合格的系統工程師必須具備「系統資源量測與健康度診斷」的能力。

今天我們將深入探討 Linux 伺服器中最核心的三項效能監控工具:htop(CPU 與程序負載)、free(記憶體使用率)與 df(磁碟儲存空間),建立系統狀態的第一道監控防線。


1. CPU 與程序即時監控
Linux 傳統內建的程序檢視工具是 top,但文字介面較為陽春且難以直覺操作。現在通常會安裝更加視覺化、支援色彩顯示與鍵盤互動的 htop。
(1)安裝 htop

sudo apt update
sudo apt install -y htop

(2)啟動並解讀監控畫面
直接在終端機輸入:

htop

進入畫面後,整體資訊可分為三大區塊:
https://ithelp.ithome.com.tw/upload/images/20260926/20183886x3dBn2nbDS.png

  • 頂部資源儀表板:
    • CPU 使用率長條條形圖: 顏色通常區分使用者程序(綠色)、系統核心程序(紅色)與低優先級程序(藍色)。
    • Mem(記憶體)與 Swp(置換空間): 呈現實體記憶體與虛擬記憶體的即時占用比例。
    • Tasks / Load average(系統平均負載): 顯示系統在過去 1 分鐘、5 分鐘、15 分鐘內的平均排隊處理程序數。若數值長期大於「CPU 核心數」,代表系統運算資源處於過載瓶頸。

https://ithelp.ithome.com.tw/upload/images/20260926/20183886YDNGey68HU.png

  • 中間程序清單:
    • PID: 程序識別碼(Process ID)。
    • USER: 執行該程序的系統使用者。
    • CPU% / MEM%: 該程序各自占用的 CPU 與實體記憶體百分比。
    • Command: 該程序被叫起時的完整指令與路徑。
  • 底部功能快捷列:
    • F3(Search): 依關鍵字搜尋特定程序(例如輸入 python 快速定位我們在 Day 24 建立的常駐爬蟲)。
    • F6(SortBy): 選擇排序方式(例如改依 %MEM 排序,抓出吃記憶體的程序)。
    • F9(Kill): 對選定的程序送出訊號。
    • F10 或 q: 退出 htop。

2.記憶體容量剖析
在監控伺服器時,常會有一個問題讓人感到困惑:

「我的程式明明沒做什麼事,為什麼 Linux 的記憶體快被吃光了?」

使用人性化可讀格式檢視記憶體狀態:

free -h

輸出範例:
https://ithelp.ithome.com.tw/upload/images/20260926/201838863NcmgApvga.png
欄位解析:

  • total: 主機安裝的總實體記憶體容量。
  • used: 應用程式與核心實際正在使用的記憶體。
  • free: 完全未被分配或使用的空白記憶體。
  • buff/cache:為了提升系統 I/O 效率,核心會借用閒置的記憶體來快取經常讀取的檔案內容,因此free 數值偏低在 Linux 中是完全正常的運作機制。
  • available(真實健康度指標):系統真正可用的記憶體總額, 它包含了當前未使用的記憶體,以及「若新程序需要、系統可立即回收釋出」的快取部分。只要 available 保持充足,系統就不會有記憶體耗盡的風險。
  • 置換:當實體記憶體嚴重不足時,硬碟中劃分出的緊急備用空間。若發現數值持續上升且居高不下,代表主機記憶體嚴重不足,會導致回應極度緩慢。

3.磁碟儲存空間監控:df 與 du 的搭配運用
磁碟滿載是伺服器運行中最常見的隱形殺手。一旦根目錄(/)空間達到 100%,系統日誌將無法寫入、資料庫無法更新,甚至會引發許多背景服務直接崩潰中斷。
(1)檢視整體磁碟分割區容量(df)
透過 df -h(Disk Free)快速檢視各個檔案系統的掛載點與剩餘容量:

df -h

輸出範例:
https://ithelp.ithome.com.tw/upload/images/20260926/20183886GJQd0K6coT.png

  • 當已用% 超過 80% 時應規劃清理,超過 90% 則屬於高風險緊急狀態。

(2)定位肥大檔案與目錄(du)
若發現磁碟空間不足,需要找出「到底是哪個目錄把空間吃掉」,此時應使用 du(Disk Usage)。

檢測特定目錄下各子目錄的佔用容量(以根目錄 / 下的第一層為例):

sudo du -h --max-depth=1 / 2>/dev/null | sort -hr | head -n 10

指令拆解:

  • sudo du -h --max-depth=1 /:人性化顯示容量,且僅計算下一層子目錄。
  • 2>/dev/null:將沒有權限存取的錯誤訊息重導向至黑洞,維持輸出乾淨。
  • sort -hr:依照檔案容量由大到小排序。
  • head -n 10:只列出排名前 10 大的吃空間目錄。

https://ithelp.ithome.com.tw/upload/images/20260926/20183886hMYkCS0lhZ.png


4.清除非必要的系統日誌與快取
若檢查後發現磁碟空間緊張,可使用以下兩項維運清理手法:
(1)清理 Systemd Journal 日誌保留量
Systemd 會持續記錄所有背景服務的輸出日誌,日積月累會佔用大量空間。可透過以下指令將日誌總量限制在安全範圍內:

# 限制日誌保留總容量上限為 200M
sudo journalctl --vacuum-size=200M
# 限制僅保留最近 7 天內的日誌
sudo journalctl --vacuum-time=7d

(2)清理 apt 套件暫存包
每次透過 apt install 下載的 .deb 安裝包預設會留存在快取目錄中:

sudo apt clean

執行後可安全釋放暫存檔案,完全不影響既有已安裝的軟體運作。


|明日目標:明天將學習如何使用 ping、curl、netstat\檢測對外連線狀態與本機連接埠監聽清單,排查各類網路不通的疑難雜症。|


上一篇
Day 26|SSH 金鑰配對認證與伺服器登入強化
下一篇
Day 28|網路連線與通訊診斷:ping、curl 與 ss/netstat 排查
系列文
大學生的VirtualBox虛擬機與Ubuntu實戰30天 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言