本教學示範各種 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 影響效能。
