技術文章 · IT 指令工具箱

Linux 程序指令:ps、top、pgrep、kill、nice、jobs

整理 ps、top、pgrep、pkill、kill、nice、renice、jobs、nohup 常用指令,包含找 CPU/記憶體異常與安全停止程序的順序。

作者 Steve Chen · 發布  · 約 4 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

看到 CPU 滿或服務卡住時,先辨識 PID、父子關係、啟動參數與服務管理器。直接 kill -9 只會把程序終止,不會處理它為什麼卡住,也可能留下未完成寫入。

19 組範例LinuxmacOS(參數略有差異)查核日期:2026-08-11
動手前:先送 TERM,讓程序有機會收尾;只有確認無法正常停止、且了解資料風險後才考慮 KILL。受 systemd 或其他 supervisor 管理的服務應從管理器操作。

找出程序

列出所有程序Linux/macOS

ps aux

BSD 風格輸出,Linux 與 macOS 欄位可能不同。

Linux 依 CPU 排序GNU/Linux

ps -eo pid,ppid,user,%cpu,%mem,etime,cmd --sort=-%cpu | head -n 20

只讀取快照,不是持續監看。

Linux 依記憶體排序GNU/Linux

ps -eo pid,user,%mem,rss,etime,cmd --sort=-%mem | head -n 20

RSS 單位通常是 KiB。

依名稱找 PIDLinux/macOS

pgrep -af nginx

macOS pgrep 的 -a/-f 支援度依版本而異。

看程序樹Linux

pstree -ap

pstree 可能要另行安裝。

查看特定 PIDLinux/macOS

ps -p 1234 -o pid,ppid,user,etime,%cpu,%mem,command

把 1234 換成實際 PID。

持續看 Linux 資源Linux

top

按 q 離開;不同 top 實作快捷鍵不同。

持續看 macOS 資源macOS

top -o cpu

依 CPU 排序顯示。

停止與調整優先權

送出正常終止訊號Linux/macOS

kill -TERM 1234

讓程序有機會關檔與釋放資源。

重新載入設定訊號Linux/macOS

kill -HUP 1234

是否支援與實際行為由該程式決定。

最後手段強制終止Linux/macOS

kill -KILL 1234

不能被捕捉或清理;只在了解後果時使用。

依完整名稱送 TERMLinux

pkill -TERM -x process-name

-x 限制完整名稱,先用 pgrep -x 驗證。

較低優先權啟動工作Linux/macOS

nice -n 10 long-job

nice 值越高,CPU 排程優先度通常越低。

調整既有程序 niceLinux/macOS

renice 10 -p 1234

提高優先權通常需要較高權限。

Shell 背景工作

把工作放到背景Bash/Zsh

long-job &

仍屬於目前 shell 的 job。

列出目前 shell 工作Bash/Zsh

jobs -l

只看這個 shell 啟動的 job,不是全系統程序。

把暫停工作移到背景Bash/Zsh

bg %1

先用 jobs 確認 job number。

把背景工作拉回前景Bash/Zsh

fg %1

接回終端機互動。

登出後仍執行並寫 logLinux/macOS

nohup long-job > long-job.log 2>&1 &

更正式的長期服務應交給 systemd、launchd 或排程器。

怎麼確認有做對

  • 終止前後用 ps 或 pgrep 確認 PID 狀態。
  • 檢查服務 log 與監控是否恢復。
  • 若程序由 supervisor 管理,確認沒有立刻被重啟成異常循環。

常見錯誤

  • 沒有確認 PID 就送 signal。
  • 把 kill -9 當一般重啟。
  • 只看瞬間 CPU 快照便下結論。
  • 忘記程序其實由 systemd、Docker 或 Kubernetes 管理。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章