iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0

在真實生產環境(Production)中,伺服器偶爾會遇到網站回應變慢、記憶體不足(OOM, Out of Memory),甚至是 CPU 100% 被佔滿的情況。
這時候不能只靠「重啟伺服器」來解決問題。需要透過 Linux 內建的進程(Process)監控工具,精準找出是哪一個程式出現問題,並決定要怎麼處理。

Linux 進程排查四大指令
在 Linux 中,任何正在執行的程式、服務或腳本都會被分配一個獨立的 PID (Process ID)。我們主要透過以下四個指令來觀察與管理它們:

指令 英文全稱 / 概念 適用情境與特色 實務維運常用命令與範例
ps Process Status 查看當下瞬間的進程快照(Static)。 ps aux(查看系統所有進程)ps aux
top Table Of Processes 動態即時監控 CPU、Memory 使用率與進程列表(預設 3 秒更新)。 按 P 鍵依 CPU 排序、按 M 鍵依記憶體排序、按 q 離開
htop Highly Top top 的彩色進階版。支援滑鼠操作與直觀的資源條狀圖(需另外安裝)。 sudo apt update && sudo apt install -y htop輸入 htop 直接開啟
kill Kill Process 傳送訊號(Signal)給指定 PID 以終止進程。 kill (正常關閉 SIGTERM)kill -9 (強制殺死 SIGKILL)

ps aux 輸出的關鍵欄位解析
執行 ps aux 時會印出非常詳細的欄位,維運排查時請重點觀察這幾欄:

  • USER:執行該進程的使用者帳號(如 root、ubuntu 或 www-data)。

  • PID:進程的唯一編號(要刪除進程時必須指定此編號)。

  • %CPU:該進程當前佔用的 CPU 資源百分比。

  • %MEM:該進程當前佔用的記憶體百分比。

  • STAT:進程狀態(例如 R 代表 Running 運作中、S 代表 Sleeping 休眠中、Z 代表 Zombie 殭屍進程)。

  • COMMAND:啟動該進程的原始指令或程式路徑。

記憶體與磁碟空間快速診斷指令
除了進程之外,資源排查還常搭配以下兩個輕量級指令:

  • free -h:快速查看當前記憶體(RAM)與 Swap 的總量、已用量與剩餘量(-h 表示以 MB/GB 的 Human-readable 格式呈現)。

  • df -h:查看各磁碟區塊(Disk Filesystem)的容量使用率,防止硬碟空間被 Log 塞爆。

下圖為在 Multipass 虛擬機(ubuntu@my-linux)中,實際驗證系統資源檢視、背景進程建立、PID 搜尋與終止進程(kill)的完整過程:
https://ithelp.ithome.com.tw/upload/images/20260906/20183847d5qGt6J3U4.png

操作流程:
1.系統資源與磁碟空間健康檢查:
執行 free -h:查看記憶體剩餘狀況(目前記憶體使用 326MB,還有 616MB 可用空間)。
執行 df -h:確認根目錄 / 磁碟空間使用率為 65%(使用了 2.5G,尚有 1.4G),系統運作空間相當健康。

2.在背景建立測試進程:
執行 sleep 300 & 在背景開啟一個暫停 300 秒的測試程序,系統回傳作業代碼與 PID [1] 1769。

3.精準搜尋進程與 PID:
執行 ps aux | grep "sleep",在第二欄精準定位出 sleep 300 的 PID 為 1769。

4.終止進程(Kill Process):
執行 kill 1769 送出訊號關閉該程式,畫面顯示 [1]+ Terminated sleep 300,代表成功告知該進程終止運作。

5.二次驗證結果:
再次執行 ps aux | grep "sleep",此時結果只剩下 grep 指令本身,證實 PID 1769 的進程已經被徹底清理完畢。


上一篇
Day 04: Linux 檔案權限與使用者管理
系列文
從零開始的 Linux 維運與 Bash 自動化實戰 30 天5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言