用 Bash 一行指令快速揪出 Linux 伺服器上最食 CPU 嘅十個 Process

用 Bash 一行指令快速揪出 Linux 伺服器上最食 CPU 嘅十個 Process 成日聽人講「伺服器好慢、CPU 爆錶」,但係一 login 入去,面對成個黑媽媽嘅 terminal,又唔知由邊度入手。今日就用一篇短文,教大家點樣用 Bash 幾行指令,快速定位邊個 process 食咗你部 Linux 機最食 CPU,跟手仲有埋排錯方向。 點解要識睇 Process 食 CPU? 一部 ...

用 Bash 一行指令快速揪出 Linux 伺服器上最食 CPU 嘅十個 Process

成日聽人講「伺服器好慢、CPU 爆錶」,但係一 login 入去,面對成個黑媽媽嘅 terminal,又唔知由邊度入手。今日就用一篇短文,教大家點樣用 Bash 幾行指令,快速定位邊個 process 食咗你部 Linux 機最食 CPU,跟手仲有埋排錯方向。

點解要識睇 Process 食 CPU?

一部 Linux 伺服器行得慢,可能係網絡問題、可能係 disk I/O 樽頸,但最常見嘅元兇一定係某一個 process 突然失控,將成粒 CPU core 食到盡。如果你唔識定位,淨係識「重啟部機」,咁問題遲早會再嚟。識得用 top、ps、htop 呢啲工具,先至可以做到「對症下藥」。

第一步:用 top 睇即時情況

最簡單直接,就係打:

top

入到去之後,撳 Shift+P 就可以按 CPU 使用率由高至低排序。呢個係最基本嘅操作,但係 top 有個缺點:佢係互動式界面,唔方便攞數據出嚟做 script。

第二步:用 ps 攞出 Top 10 食 CPU 嘅 Process

如果你想一個指令就攞到結果,可以用 `ps` 配合 `sort` 同 `head`:

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -11

拆解一下呢條指令:

– `-eo`:自訂輸出欄位
– `pid`:Process ID
– `ppid`:Parent Process ID(邊個 process 生佢出嚟)
– `cmd`:完整執行命令
– `%cpu`:CPU 使用率
– `%mem`:記憶體使用率
– `–sort=-%cpu`:按 CPU 使用率遞減排序(負號代表由大至小)
– `head -11`:攞頭 11 行(第 1 行係 header,加 10 個 process)

第三步:想睇指定 User 嘅 Process?

如果你懷疑係某個 service account 出問題,可以加 `-u` 參數:

ps -u www-data -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -11

咁樣就只會顯示 `www-data` 呢個 user 行緊嘅 process,方便縮窄範圍。

第四步:用 watch 持續監察

如果你想一路監察,唔使手動重複打指令,可以用 `watch`:

watch -n 2 "ps -eo pid,cmd,%cpu --sort=-%cpu | head -6"

呢條指令每 2 秒自動更新一次,攞住頭 5 個最食 CPU 嘅 process。

第五步:定位到之後點做?

當你搵到元兇,假設佢 PID 係 `12345`,你可以:

# 睇下佢開咗啲咩檔案
lsof -p 12345

睇下佢喺邊度嚟

ls -l /proc/12345/exe

睇下佢嘅系統呼叫(strace 要小心用喺 production)

strace -p 12345 -c

如果真係失控,可以 kill 佢(先 SIGTERM 再 SIGKILL)

kill 12345 kill -9 12345 # 最後手段

小貼士

1. 先睇 load average:用 `uptime` 或者 `w` 睇下系統 load average,如果 load 值高過 CPU core 數,代表有 process 排緊隊等 CPU。
2. 分清 CPU 定 I/O:如果 process 係 `D`(uninterruptible sleep)狀態,多數係 disk I/O 問題,唔係 CPU 問題,用 `iostat` 或者 `iotop` 去查。
3. 記錄 baseline:喺伺服器正常嘅時候,記低個 `ps` 輸出做 baseline,出事嗰陣一比較就知道邊個 process 異常。

🔗 參考資料:NVD NIST 漏洞資料庫

識得呢幾招,下次伺服器一慢,你就唔使慌,幾行指令就可以鎖定元兇,做個真正嘅系統管理員啦。

#Linux #IT教學 #技術分享

用 Bash 一行指令快速揪出 Linux 伺服器上最食 CPU 嘅十個 Process - 文章重點速覽 infographic