ps
ps (全稱:process status)用於顯示當前進程的狀態,與windows 的任務管理器類似。ps 命令列出的是當前那些進程的快照,就是執行 ps 命令的那個時刻的那些進程,如果想要動態的顯示進程信息,就可以使用top命令。要對進程進行監測和控制,就必須要了解當前進程的情況,也就是需要查看當前進程。而 ps 命令就是最基本,同時也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等。總之大部分信息都是可以通過執行該命令查看。
進程有5種狀態
| 進程狀態 | 含義 | 對應ps命令的狀態碼 |
|---|---|---|
| 運行 | 正在運行或在運行隊列中等待 | R 運行 runnable (on run queue) |
| 中斷 | 休眠中, 受阻, 在等待某個條件的形成或接受到信號 | S 中斷 sleeping |
| 不可中斷 | 收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生 | D 不可中斷 uninterruptible sleep (usually IO) |
| 僵死 | 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用后釋放 | Z 僵死 a defunct (”zombie”) process |
| 停止 | 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行 | T 停止 traced or stopped |
ps命令支持三種語法格式
- Unix風格的參數,前面加單破折線
- BSD風格的參數,前面不加破折線
- GNU風格的長參數,前面加雙破折線
語法
ps [options]
-
-a 顯示同一終端下的所有程序
-
-A 顯示所有進程
-
-u 顯示用戶
-
-x 顯示無控制終端的進程
-
-e 顯示所有用戶的進程此參數的效果和指定a參數相同
-
-f 用ASCII字符顯示樹狀結構,表達程序間的相互關系
案例
顯示指定用戶信息
ps -u root
顯示所有進程信息,連同命令行
ps -ef
說明:
- UID:啟動這些進程的用戶
- PID:進程的進程ID
- PPID:父進程的進程號(如果該進程是由另一個進程啟動的)
- C:進程生命周期中的CPU利用率
- STIME:進程啟動時的系統時間
- TTY:進程啟動時的終端設備
- TIME:運行進程需要的累計CPU時間
- CMD:啟動的程序名稱
ps 與 grep 常用組合用法,查找指定進程
ps -ef | grep java
列出目前所有的正在內存當中的程序
ps -aux
說明
- USER: 啟動進程的用戶
- PID: 進程的ID
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的記憶體使用率
- VSZ: 占用的虛擬記憶體大小
- RSS: 占用的記憶體大小
- TTY: 進程啟動時的終端設備
- STAT: 行程的狀態
- D: 無法中斷的休眠狀態 (通常 IO 的進程)
- R: 正在執行中
- S: 靜止狀態
- T: 暫停執行
- Z: 不存在但暫時無法消除
- W: 沒有足夠的記憶體分頁可分配
- <: 高優先序的進程
- N: 低優先序的進程
- L: 有記憶體分頁分配並鎖在記憶體內 (實時系統或捱A I/O)
- START: 進程開始時間
- TIME: 運行進程需要的累計CPU時間
- COMMAND: 所執行的命令
