ps 概述
`ps` 命令是一個顯示特定時刻進程信息的「快照」工具。它不是像 `top` 或 `htop` 那樣實時更新,而是僅在命令執行時輸出一次信息。這對於了解系統當前正在進行的工作非常有用。
ps 的主要角色
`ps` 命令主要用於以下目的:
主要應用領域
- 確認正在運行的進程: 了解當前系統中有哪些程序或服務正在運行。
- 查找進程 ID (PID): 為了終止或控制特定進程,查找該進程的 PID。
- 確認進程狀態: 確認進程是正在運行、等待還是僵屍狀態等。
- 確認 CPU 和內存使用量: 簡要查看每個進程使用的資源信息。
- 腳本調試: 檢查在後台運行的腳本或程序的狀態。
理解 ps 輸出列
`ps` 命令執行時通常會顯示以下信息:
主要輸出列
- **PID**: 進程 ID。每個進程的唯一標識符。
- **TTY**: 進程運行的終端(tty)。`?` 表示未連接到終端的進程(守護進程)。
- **TIME**: 進程使用的總 CPU 時間。
- **CMD**: 啟動進程所使用的命令。
- **STAT**: 進程的當前狀態代碼(例如:`R` - 正在運行,`S` - 睡眠,`Z` - 僵屍,`D` - 不可中斷的睡眠,`T` - 停止,`<` - 高優先級,`N` - 低優先級,`s` - 會話領導者,`l` - 多線程,`+` - 屬於前台進程組)。
- **USER**: 執行進程的用戶名稱。
- **%CPU**: 進程使用的 CPU 使用率。
- **%MEM**: 進程使用的物理內存(RAM)使用率。
- **VSZ (虛擬內存大小)**: 進程使用的虛擬內存總量。
- **RSS (常駐集合大小)**: 進程實際佔用的物理內存(RAM)量。
主要 ps 命令選項
`ps` 命令提供了非常多的選項,主要分為 Unix 風格、BSD 風格和 GNU 風格三種。這裡介紹最常用的選項。
1. 進程選擇選項 (BSD/Unix 風格)
2. 輸出格式選項
3. 進程樹和線程
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`ps` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用示例
通過 `ps` 命令的多種應用示例,學習如何有效查詢和分析系統的進程狀態。
查詢當前終端的所有進程
ps
簡單顯示當前登錄終端(Shell)中運行的進程列表。
查詢所有用户的進程詳細信息
ps aux
輸出所有用戶(a)的進程,包括未連接到終端的進程(x),以用戶(u)為主的詳細信息。最常用的組合。
以進程樹形式查詢所有進程
ps -ef
將所有進程以父子關係的樹狀形式可視化顯示。對於了解系統進程結構非常有用。
查詢特定進程(例如:Nginx)信息
ps aux | grep nginx
從 `ps aux` 的結果中過濾出包含 `nginx` 字符串的進程。對於檢查 Nginx 服務器的進程狀態非常有用。
查詢 CPU 使用率最高的前 10 個進程
ps aux --sort -%cpu | head -n 10
對所有進程根據 CPU 使用率進行降序排序,僅輸出前 10 個。對於查找資源消耗較多的進程非常有用。
選擇性輸出特定列
ps -eo pid,user,%cpu,%mem,cmd
僅輸出進程的 PID、用戶名稱、CPU 使用率、內存使用率以及命令行。對於需要的資訊簡潔查看非常有用。
查找僵屍(Zombie)進程
ps aux | grep 'Z'
查找狀態(STAT)為 'Z' 的僵屍進程,以診斷系統資源浪費的原因。