靜態查看進程信息 -- 基於 ps 命令實現
阿新 • • 發佈:2019-04-28
pro 虛擬內存 cpu tty command time 有用 linux 操作 6.2 1、簡介
目前 可以 通過 很多種方式 查看 系統進程,top之類的 工具 可以 動態 的獲取 進程信息,今天 介紹 靜態 獲取 進程信息的 工具 -- ps(當然,靜態 獲取 進程信息 這類工具 肯定 不止 ps,還有 pstree...)
1.1 進程狀態
### ### 進程狀態 可以 是單個狀態,也可以是 多個 狀態的組合,例如 Ss、S< ### ## R -- Running.運行中 ## S -- Interruptible Sleep.等待調用 ## D -- Uninterruptible Sleep.不可中斷睡眠 ## T -- Stoped.暫停或者跟蹤狀態 ## X -- Dead.即將被撤銷 ## Z -- Zombie.僵屍進程 ## W -- Paging.內存交換 ## N -- 優先級低的進程 ## < -- 優先級高的進程 ## s -- 進程的領導者 ## L -- 鎖定狀態 ## l -- 多線程狀態 ## + -- 前臺進程
1.2 參數信息(不斷完善)
## -l -- 長格式輸出(與 -j 參數 不能同時使用)
## -a -- -a 代表 all
## -x -- x參數會顯示沒有控制終端的進程
## -u -- 查看特定用戶進程
## -j -- 用任務格式來顯示進程(與 -l 參數 不能同時使用)
## -f -- 用樹形格式來顯示進程
## -o -- -o 參數控制輸出
## -C -- 顯示指定進程
2、ps -l 執行分析
2.1 簡介
ps -l 顯示自己這次登陸的 bash 相關的進程信息羅列出來
2.2 執行
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1003 195824 195823 0 80 0 - 5616 wait pts/1 00:00:00 bash
0 R 1003 232370 195824 0 80 0 - 2205 - pts/1 00:00:00 ps
2.3 結果分析
## F -- 進程的標誌(process flags),當 flags 值為 1 則表示此子程序只是 fork 但沒有執行 exec,為 4 表示此程序使用超級管理員 root 權限 ## S -- 進程的狀態 ## UID -- 進程的擁有用戶 ## PID -- 進程的 ID ## PPID -- 其父進程的 PID ## C -- CPU使用率,單位為百分比 ## PRI -- 優先級(對應 top PR;PR、NI參見 "Linux 操作命令 ps -- 進程查看" 一文) ## NI -- 進程的 NICE 值(優先級) ## ADDR -- ADDR是kernel function,指出該程序在內存的哪個部分,如果是個running的程序,一般就會顯示 "-" ## SZ -- SZ代表程序用掉多少內存 ## WCHAN -- WCHAN表示目前程序是否運行中,同樣的,若為-表示正在運行中 ## TTY -- 終端 ID ## TIME -- 進程消耗CPU的時間(運行時長) ## CMD -- 命令的名稱和參數
3、ps -aux 執行分析
3.1 簡介
羅列出所有的進程信息
3.2 執行
# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 33784 4268 ? Ss Mar06 0:03 /sbin/init
root 2 0.0 0.0 0 0 ? S Mar06 0:00 [kthreadd]
... ...
root 3 0.0 0.0 0 0 ? S Mar06 2:28 [ksoftirqd/0]
3.3 結果分析
## USER -- 進程用戶用戶名
## PID -- 進程的 ID
## %CPU -- 進程占用的 CPU 百分比
## %MEM -- 占用內存的百分比
## VSZ -- 進程使用虛擬內存大小
## RSS -- 駐留內存中頁的大小
## TTY -- 終端 ID
## STAT -- 進程的狀態
## START -- 啟動進程的時間
## TIME -- 實際使用CPU運行的時間
## COMMAND -- 命令的名稱和參數
4、ps -axjf 執行分析
4.1 簡介
ps -axjf 連同部分的進程呈樹狀顯示出來
4.2 執行
# ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 S 0 2:28 \_ [ksoftirqd/0]
... ...
2 237046 0 0 ? -1 S 0 0:00 \_ [kworker/u480:1]
0 1 1 1 ? -1 Ss 0 0:03 /sbin/init
... ...
1 902 902 902 ? -1 Ss 0 0:04 smbd -F
902 1160 902 902 ? -1 S 0 0:00 \_ smbd -F
902 1271 902 902 ? -1 S 0 0:08 \_ smbd -F
4.3 結果分析
## PPID -- 其父進程的 PID
## PID -- 其父進程的 PID
## PGID -- 進程組 PID
## SID -- session 的 ID
## TTY -- 終端 ID
## TPGID -- 前臺進程組的 ID;TPGID欄寫著-1的都是沒有控制終端的進程,也就是守護進程
## STAT -- 啟動進程的時間
## UID -- 進程的擁有用戶
## TIME -- 實際使用CPU運行的時間
## COMMAND -- 命令的名稱和參數
5、ps -afxo 執行分析
5.1 簡介
指定 顯示的 信息
5.2 執行
## 只顯示 進程的 用戶信息
## ps -axf -o user
# ps -afxo user
6、ps -C 執行分析
6.1 簡介
指定 顯示的 進程
6.2 執行
## 只顯示 指定的進程
# ps -C smbd
PID TTY TIME CMD
902 ? 00:00:04 smbd
1160 ? 00:00:00 smbd
1271 ? 00:00:08 smbd
# ps -C smbd -jf
UID PID PPID PGID SID C STIME TTY TIME CMD
root 902 1 902 902 0 Mar06 ? 00:00:04 smbd -F
root 1160 902 902 902 0 Mar06 ? 00:00:00 smbd -F
root 1271 902 902 902 0 Mar06 ? 00:00:08 smbd -F
# ps -C smbd -lf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 902 1 0 80 0 - 79182 - Mar06 ? 00:00:04 smbd -F
1 S root 1160 902 0 80 0 - 77195 - Mar06 ? 00:00:00 smbd -F
5 S root 1271 902 0 80 0 - 79182 - Mar06 ? 00:00:08 smbd -F
靜態查看進程信息 -- 基於 ps 命令實現