Linux 系統資源監控完整教學|CPU、Memory、Disk、Network 實務案例

Linux 系統資源監控|CPU、Memory、Disk、Network 完整實務教學

本教學示範各種 Linux 系統監控指令與工具,搭配真實輸出與欄位解析,方便系統管理與效能分析。

CPU 使用率監控

top 指令


# top 即時監控 CPU/Memory/進程
# 安裝:預設大部分 Linux 已安裝
$ top

top - 15:42:10 up 5 days, 2 users, load average: 0.12, 0.15, 0.10
# 系統啟動 5 天, 目前有 2 個使用者登入
# load average: 過去 1、5、15 分鐘平均負載

Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
# Tasks: 總進程數 180
# running: 運行進程 1
# sleeping: 休眠 179
# stopped: 停止 0
# zombie: 殭屍 0

%Cpu(s): 12.5 us, 5.0 sy, 0.0 ni, 82.0 id, 0.5 wa, 0.0 hi, 0.5 si, 0.0 st
# us: 使用者 CPU 12.5%
# sy: 系統 CPU 5.0%
# ni: nice 調整優先權 0%
# id: 空閒 82%
# wa: 等待 I/O 0.5%
# hi: 硬體中斷 0%
# si: 軟體中斷 0.5%
# st: 虛擬化偷取 0%

PID USER      PR  NI  VIRT   RES   SHR S %CPU %MEM TIME+ COMMAND
1423 root      20   0 162560 10232 8124 S  4.3  0.1 0:02.18 sshd
# PID: 進程 ID
# USER: 執行者
# PR/NI: 優先權 / nice 值
# VIRT/RES/SHR: 虛擬/實體/共用記憶體
# S: 狀態 R=運行, S=休眠, Z=殭屍
# %CPU/%MEM: CPU/記憶體使用率
# TIME+: CPU 累計使用時間
# COMMAND: 進程名稱

htop 指令


# 互動式彩色監控 CPU/Memory/Swap
# 安裝:sudo apt install htop
$ htop

mpstat 指令


# 每秒刷新 CPU 核心使用率
# 安裝:sudo apt install sysstat
$ mpstat -P ALL 1

12:00:01 AM  CPU   %usr  %nice  %sys  %iowait  %irq  %soft  %steal  %guest  %idle
12:00:02 AM  all   12.5   0.0   5.0      0.5   0.0   0.0     0.0     0.0   82.0
# CPU: 核心編號
# %usr: 使用者 CPU
# %sys: 系統 CPU
# %iowait: 等待 I/O
# %idle: 空閒百分比
# %nice/%irq/%soft/%steal/%guest: 高階 CPU 使用狀態

pidstat 指令


# 監控單進程 CPU/Memory 使用
# 安裝:sudo apt install sysstat
$ pidstat 1

12:00:01 AM    UID       PID    %usr %system  %guest   %CPU  Command
12:00:02 AM      0      1423    4.0   0.5      0.0   4.5   sshd
# UID: 使用者 ID
# PID: 進程 ID
# %usr: 使用者 CPU
# %system: 系統 CPU
# %CPU: CPU 總使用率
# Command: 進程名稱

Memory 使用率監控

free 指令


# 查看系統記憶體使用
$ free -h

              total        used        free      shared  buff/cache   available
Mem:           7.8G        2.8G        4.1G        0.2G        1.0G        4.5G
Swap:          2.0G          0B        2.0G
# total: 總記憶體
# used: 已使用
# free: 空閒
# shared: 共享記憶體
# buff/cache: 系統快取
# available: 可用記憶體
# Swap: 虛擬記憶體使用狀況

vmstat 指令


# 每秒顯示 Memory/CPU/IO 狀態
$ vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0  4194304 102400 512000    0    0     1     2  100  200 12  5 82  1  0
# r: 運行佇列長度
# b: 等待 IO 進程數
# swpd: Swap 已使用
# free: 空閒記憶體
# buff/cache: 快取
# si/so: Swap in/out
# us/sy/id/wa/st: CPU 使用狀態

smem 指令


# 精準分析各進程 Memory
# 安裝:sudo apt install smem
$ smem -rk

Disk 使用率監控

df 指令


# 查看磁碟分區使用
$ df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       100G   60G   35G  63% /
/dev/sdb1       500G  250G  225G  53% /data
# Size: 磁碟總容量
# Used: 已使用
# Avail: 可用
# Use%: 使用百分比
# Mounted on: 掛載點

du 指令


# 目錄大小統計
$ du -sh /var/log/*

12M /var/log/syslog
5M  /var/log/kern.log
100M /var/log/mysql
# 左側: 檔案大小
# 右側: 檔案或目錄名稱

lsblk 指令


# 查看磁碟分區與掛載點
$ lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk
└─sda1   8:1    0  100G  0 part /
sdb      8:16   0  500G  0 disk
└─sdb1   8:17   0  500G  0 part /data
# NAME: 磁碟/分區
# SIZE: 容量
# TYPE: 類型
# MOUNTPOINT: 掛載位置

Network 使用率監控

iftop 指令


# 實時網路流量監控
# 安裝:sudo apt install iftop
$ sudo iftop

nload 指令


# 即時網路入/出流量
# 安裝:sudo apt install nload
$ nload

netstat / ss 指令


# 查看網路連線與端口
$ ss -tulnp
# -t: TCP, -u: UDP, -l: listening, -n: 不解析名稱, -p: 顯示進程

進階監控工具

glances 指令


# 全方位系統監控
# 安裝:sudo apt install glances
$ glances

nmon 指令


# CPU/Memory/IO/Network 圖形化監控
# 安裝:sudo apt install nmon
$ nmon

collectl 指令


# 全面性能監控,可記錄歷史數據
# 安裝:sudo apt install collectl
$ collectl

FAQ 常見問題

Linux CPU 使用率過高怎麼辦?

使用 top 或 htop 找出高 CPU 使用程序,必要時 kill 或優化程式,減少 cron job 頻率。

Linux Memory 使用率高正常嗎?

高記憶體使用率可能為 cache,可查看 free -h 的 buffers/cached 部分。若 Swap 過高,可增加記憶體或調整服務。

Linux Disk 空間不足怎麼辦?

使用 du -sh 或 ncdu 找出大檔案,刪除或移動非必要資料,確保磁碟空間充足。

如何監控特定程序?

使用 top -p PID 或 ps aux | grep 程序名,搭配 pidstat 記錄歷史使用量。

如何長期監控系統資源?

透過 crontab 定期記錄 vmstat、df、iostat,並整合到圖表或監控工具如 Grafana。

Linux 服務掛掉會影響 CPU 使用嗎?

若服務自動重啟可能短時間 CPU 過高,可使用 systemctl disable 或調整服務啟動策略。

如何查看殭屍進程?

使用 ps aux | grep Z 或 top,若存在僵屍進程,檢查父進程,必要時 kill 父進程或重啟服務。

Linux Swap 使用過高怎麼辦?

檢查是否 Memory 不足,增加 RAM 或調整 swappiness,避免系統過度使用 Swap 影響效能。

    PAGE TOP