free -h
# total used free shared buff/cache available
# Mem: 7.7G 1.2G 4.5G 120M 2.0G 6.1G
# Swap: 2.0G 0B 2.0G
| 鍵 | 功能 |
|---|---|
M | 依記憶體排序 |
P | 依 CPU 排序(預設) |
T | 依執行時間排序 |
1 | 切換顯示各 CPU 核心 |
k | 殺死進程(輸入 PID + 信號) |
r | 調整 nice 值 |
c | 顯示完整命令行 |
strace(極強除錯)yum install htop / apt install htop# 顯示所有進程的 PID、CPU%、MEM%、命令
ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head -20
# 找出同名進程數量(服務實例過多檢測)
ps -C nginx --no-headers | wc -l
ps -C php-fpm --no-headers | wc -l
# 顯示執行緒
ps -eLf | grep nginx
iostat -x 1 5
# 每秒採樣 1 次,共 5 次,顯示擴充統計
vmstat 1 10
# procs: r(可運行) b(阻塞)
# memory: swpd(已用swap) free buff cache
# swap: si(換入) so(換出) <-- 持續非零 = 記憶體壓力大
# io: bi(塊讀入) bo(塊寫出)
# system: in(中斷) cs(上下文切換) <-- cs 高 = 進程/執行緒過多
# cpu: us sy id wa st
# 安裝
yum install sysstat
systemctl enable --now sysstat
# CPU 歷史
sar -u -f /var/log/sa/sa$(date +%d)
# 記憶體歷史
sar -r -f /var/log/sa/sa$(date +%d)
# I/O 歷史
sar -d -f /var/log/sa/sa$(date +%d)
# 網路歷史
sar -n DEV -f /var/log/sa/sa$(date +%d)
# 即時採樣
sar -u 1 10
uptime / top 確認負載異常free -h 確認記憶體/Swapiostat -x 1 確認磁碟 I/Ovmstat 1 確認上下文切換、Swap 活動ps -eo pid,pcpu,pmem,cmd --sort=-pcpu 定位高佔用進程strace -p PID / lsof -p PID 深度分析進程行為sar 回溯歷史趨勢,判斷突發還是慢性#!/bin/bash
echo "=== $(date) Health Check ==="
echo "Load: $(uptime | awk -F'load average:' '{print $2}')"
echo "Mem: $(free -h | grep Mem | awk '{print "Used: "$3"/"$2" ("int($3/$2*100)"%)"}')"
echo "Disk: $(df -h / | awk 'NR==2 {print "Used: "$3"/"$2" ("$5")"}')"
echo "Top CPU:"
ps -eo pid,pcpu,pmem,cmd --sort=-pcpu | head -6
echo "Top MEM:"
ps -eo pid,pcpu,pmem,cmd --sort=-pmem | head -6
echo "IO Wait: $(iostat -c 1 2 | tail -1 | awk '{print $4"%"}')"
掌握這套指令組合與診斷流程,即可在無監控系統的環境下快速定位 Linux 效能瓶頸。