1. 程式人生 > >靜態查看進程信息 -- 基於 ps 命令實現

靜態查看進程信息 -- 基於 ps 命令實現

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 命令實現