--- title: ps aux:掌控系統 process 的利器 tags: [Tool, CLI, Linux, MacOS, Process] --- # ps aux:掌控系統 process 的利器 [文章更新時間: 2026-02-23 16:27] ![ps](https://hackmd.io/_uploads/ByG17nO8Zl.jpg) ### 1. 簡介 `ps` (Process Status) 是 Unix-like 系統中用於報告當前進程快照的標準工具。而 `aux` 這一組參數組合(源自 BSD 風格)是最常用的搭配用法。它不像 `top` 或 `htop` 那樣動態更新,而是提供一個**靜態的、精確的**當前系統狀態清單,非常適合用於腳本分析或排查特定時刻的系統問題。 --- ### 2. 優點 * **無需安裝**:幾乎預裝在所有 Linux 發行版和 macOS 中。 * **細粒度資訊**:從 CPU/記憶體佔用到進程啟動時間,資訊一應俱全。 * **適合自動化**:其輸出的純文字格式極易與 `grep`、`awk`、`sed` 等工具結合。 * **資源消耗極低**:相比圖形化監控工具,它對系統資源的佔用幾乎可以忽略不計。 --- ### 3. 安裝步驟 這是一個內建工具,你通常**不需要安裝**。 * **Linux (Ubuntu/CentOS/Arch/etc.)**: 預裝在 `procps` 套件中。 * **macOS**: 系統內建,直接打開 `Terminal.app` 或 `iTerm2` 即可使用。 如果你發現系統中缺失(極少見的情況,如極簡 Docker 鏡像): ```bash # Ubuntu/Debian sudo apt update && sudo apt install procps # CentOS/RHEL sudo yum install procps-ng ``` --- ### 4. 操作步驟 直接在終端機輸入: ```bash ps aux ``` #### 欄位含義解讀: | 欄位 | 說明 | | --- | --- | | **USER** | 進程的所有者。 | | **PID** | 進程識別碼(Process ID),殺掉進程時常用。 | | **%CPU** | 佔用的 CPU 運算能力百分比。 | | **%MEM** | 佔用的實體記憶體百分比。 | | **VSZ** | 虛擬記憶體大小 (KB)。 | | **RSS** | 實際駐留記憶體大小 (KB)。 | | **STAT** | 進程狀態(如 `R` 運行、`S` 睡眠、`Z` 殭屍)。 | | **START** | 進程啟動的時間。 | | **COMMAND** | 啟動該進程的完整指令。 | --- ### 5. 使用情境介紹 #### 情境 A:尋找並殺死「當掉」的程式 當你的 Chrome 或某個開發工具卡死時,你需要找到它的 PID: ```bash ps aux | grep chrome kill -9 <PID> ``` #### 情境 B:找出系統中的「記憶體怪獸」 想知道是誰吃掉了你的 RAM? ```bash # 根據 %MEM 排序 ps aux --sort=-%mem | head -n 10 ``` #### 情境 C:確認後台服務是否正在運行 例如確認 `nginx` 是否啟動: ```bash ps aux | grep nginx ``` --- ### 6. 進階用法 #### 技巧一:自定義輸出欄位 有時候 `aux` 給的資訊太多了,你可以自定義想要看的欄位,這在撰寫監控腳本時非常有用: ```bash ps -eo pid,user,ppid,%mem,%cpu,comm --sort=-%cpu ``` #### 技巧二:查看線程級別的細節 如果你想看某個進程下所有的線程: ```bash ps -aL ``` #### 技巧三:排除 grep 自身的進程 當你用 `grep` 搜尋時,通常會看到 `grep --color=auto ...` 這一列,透過這個小技巧可以過濾它: ```bash ps aux | grep [n]ginx ``` *(註:利用正則表達式,讓 grep 搜尋 'nginx' 但匹配不到包含 'grep [n]ginx' 的字串)* --- ### 💡同類型工具推薦 雖然 `ps aux` 是經典,但如果想要有更好的互動性,我強烈建議你這個工具 {%preview https://hackmd.io/@steepinglogic/btop %}