1. 程式人生 > >ps命令常用選項參數詳解

ps命令常用選項參數詳解

命令 linux

PS命令是什麽

ps命令能夠給出當前系統中進程的快照。它能捕獲系統在某一時間的進程狀態。如果想要不斷更新查看這個狀態,可以配合watch命令或使用top命令。
ps命令支持三種使用的語法格式

  1. UNIX 風格:選項可以組合在一起,並且選項前必須有"-"連字符。

  2. BSD 風格 :選項可以組合在一起,但是選項前不能有"-"連字符。

  3. GNU 風格 :長選項,選項前需要有兩個"-"連字符。

ps命令基本選項及參數釋義

a:顯示現行終端機下的所有程序,包括其他用戶的程序。
c:列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,選項或常駐服務的標示。
e:列出程序時,顯示每個程序所使用的環境變量。
f:用ASCII字符顯示樹狀結構,表達程序間的相互關系。

g:顯示現行終端機下的所有程序,包括群組領導者的程序。
h:不顯示標題列。
u:以用戶為主的格式來顯示程序狀況。
x:顯示所有程序,不以終端機來區分。
r:只列出現行終端機正在執行中的程序。
v:采用虛擬內存的格式顯示程序狀況
-a:顯示所有終端機下執行的程序,除了階段作業領導者之外。
-c:顯示CLS和PRI欄位。
-d:顯示所有程序,但不包括階段作業領導者的程序。
-e:顯示所有程序。
-f:顯示UID,PPIP,C與STIME欄位。
-H:顯示樹狀結構,表示程序間的相互關系。
-u<用戶識別碼>:列出屬於該用戶的程序的狀況,也可使用用戶名稱來指定。
-j:采用工作控制的格式顯示程序狀況
-l或l:采用詳細的格式來顯示程序狀況。
-N:顯示所有的程序,除了執行ps指令終端機下的程序之外。

使用基本的ps命令,在執行之後的結果如下

[[email protected] ~]# ps
   PID TTY          TIME CMD
 15422 pts/1    00:00:00 bash
 16511 pts/1    00:00:00 ps

結果會默認顯示4列信息。

  • PID:運行命令的進程編號。

  • TTY:命令所運行的終端。tty1 - tty6 是本機登入者,pts/0等為網絡連接主機的程序。

  • TIME:運行著改命令所占用的CUP處理時間。

  • CMD:該進程所運行的命令。

將目前屬於自己本次登入的PID與相關信息列示出來

[[email protected]
/* */ ~]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 15422 15406 0 80 0 - 30202 wait pts/1 00:00:00 bash 0 R 0 16520 15422 0 80 0 - 37233 - pts/1 00:00:00 ps
  • F:這個程序的旗標(flag)4,表示使用者為superuser。

  • S:這個程序的狀態(STAT)
    R:正在運作或是被運作。
    S:正在睡眠中,可被訊號喚醒。
    T:正在偵測或者停止。
    Z:已經停止,但副程序無法正常終止。造成zombie(僵屍)程序狀態

  • UID:癡行者身份

  • C:CPU使用資源百分比

  • PRI:進程的執行優先權(Priority),值越小越優先

  • NI:進程的nice值,其表示進程可被執行的優先級的修正數值。

  • ADDR:內核函數,指出改程序在內存的哪個部分。如果是執行的程序,則為"-"

  • SZ:使用的內存大小

  • WCHAN:目前這個程序是否正在運行,"-"表示正在運行。

列出目前所有正在內存當中的程序

[[email protected] ~]# ps -ax     0     0 ?        S    06:25   0:00 [scsi_eh_0]
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:15 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:01 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     6 ?        S      0:04 [kworker/u256:0]
     7 ?        S      0:02 [migration/0]
     8 ?        S      0:00 [rcu_bh]
     9 ?        S      0:17 [rcu_sched]
    10 ?        S      0:00 [watchdog/0]

-USER:進程屬於哪個使用者

  • VSZ:占用虛擬內存

  • RSS:占用固定內存

  • START:程序被觸發啟動的時間。

  • TIME:改程序實際使用CPU運作的時間。

  • COMMAND:改程序實際指令

常用選項組合

查看全部進程ps -ax

[[email protected] ~]# ps -ax
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:15 /usr/lib/systemd/systemd --switched-root --system --d
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:01 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     6 ?        S      0:04 [kworker/u256:0]
     7 ?        S      0:02 [migration/0]
     8 ?        S      0:00 [rcu_bh]

根據用戶過濾進程ps -u root

[[email protected] ~]# ps -u root
   PID TTY          TIME CMD
     1 ?        00:00:15 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:01 ksoftirqd/0
     5 ?        00:00:00 kworker/0:0H
     6 ?        00:00:04 kworker/u256:0
     7 ?        00:00:02 migration/0
     8 ?        00:00:00 rcu_bh


通過CPU和內存過濾進程ps -aux

[[email protected] ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193628  6800 ?        Ss   06:25   0:15 /usr/lib/system
root          2  0.0  0.0      0     0 ?        S    06:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    06:25   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   06:25   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    06:25   0:04 [kworker/u256:0
root          7  0.0  0.0      0     0 ?        S    06:25   0:02 [migration/0]
root          8  0.0  0.0      0     0 ?        S    06:25   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    06:25   0:17 [rcu_sched]


根據線程來過濾進程ps -L 3223\

[[email protected] ~]# ps -L 3223
   PID    LWP TTY      STAT   TIME COMMAND
  3223   3223 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon
  3223   3229 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon
  3223   3230 ?        Sl     0:00 /usr/libexec/ibus-x11 --kill-daemon


樹形顯示進程ps -axjf``pstree\

[[email protected] ~]# ps -afjx
  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   0:01  \_ [ksoftirqd/0]
     2      5      0      0 ?            -1 S<       0   0:00  \_ [kworker/0:0H]
     2      6      0      0 ?            -1 S        0   0:04  \_ [kworker/u256:0]
     2      7      0      0 ?            -1 S        0   0:02  \_ [migration/0]
     2      8      0      0 ?            -1 S        0   0:00  \_ [rcu_bh]
     2      9      0      0 ?            -1 S        0   0:17  \_ [rcu_sched]
     2     10      0      0 ?            -1 S        0   0:00  \_ [watchdog/0]
     2     11      0      0 ?            -1 S        0   0:00  \_ [watchdog/1]
     2     12      0      0 ?            -1 S        0   0:01  \_ [migration/1]
     2     13      0      0 ?            -1 S        0   0:02  \_ [ksoftirqd/1]
     2     16      0      0 ?            -1 S        0   0:00  \_ [watchdog/2]
     2     17      0      0 ?            -1 S        0   0:00  \_ [migration/2]
     2     18      0      0 ?            -1 S        0   0:01  \_ [ksoftirqd/2]
[[email protected] ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─2*[dhclient]
        │                └─2*[{NetworkManager}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}


手工篩選信息ps -eo pid,user,args

[[email protected] ~]# ps -eo pid,user,args
   PID USER     COMMAND
     1 root     /usr/lib/systemd/systemd --switched-root --system --deserialize 21
     2 root     [kthreadd]
     3 root     [ksoftirqd/0]
     5 root     [kworker/0:0H]
     6 root     [kworker/u256:0]
     7 root     [migration/0]
     8 root     [rcu_bh]
     9 root     [rcu_sched]
    10 root     [watchdog/0]
    11 root     [watchdog/1]


使用watch實時監控進程狀態watch -n1 ‘ps -aux‘

[[email protected] ~]# watch -n1 ‘ps -aux‘
Every 1.0s: ps -aux                                                                            Sun Jul  9 20:20:39 2017

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 193628  6800 ?        Ss   06:25   0:15 /usr/lib/systemd/systemd --switched-root --system --d
root          2  0.0  0.0      0     0 ?        S    06:25   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    06:25   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   06:25   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    06:25   0:04 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    06:25   0:02 [migration/0]
root          8  0.0  0.0      0     0 ?        S    06:25   0:00 [rcu_bh]


本文出自 “冬至靈思隕” 博客,請務必保留此出處http://wangzhihao.blog.51cto.com/9506194/1945713

ps命令常用選項參數詳解