linux命令ps

寫在前面:參考以下兩篇博客html

https://www.cnblogs.com/sexybear/p/Linux_ps.html
https://www.cnblogs.com/sexybear/p/Linux_ps.htmllinux

ps 命令就是最基本同時也是很是強大的進程查看命令。使用該命令能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多 的資源等等。總之大部分信息都是能夠經過執行該命令獲得的。ide

注意:ps 爲咱們提供了進程的一次性的查看,且是建立的當前進程的快照(靜態查看),它所提供的查看結果並不動態連續的;若是想對進程時間監控,應該用 top 工具
註記:
一、ps 命令有兩種不一樣的語法風格 —— BSD 與 UNIX 兩種風格。新手經常對這兩種形式產生誤解,所以咱們有必要在這裏做一個簡單的說明:
ps aux 與 ps -aux 是不一樣的,例如 -u 參數表示打印進程的 uid,而參數 u 表示顯示進程的詳細信息。
BSD 格式 —— 參數前面不加 -
$ ps aux
UNIX/LINUX 格式 —— 參數前面一般要加 -
$ ps -aux
兩種格式是容許混用的,例如 ps ax -f,但本文主要展現UNIX風格。
二、linux上進程有5種狀態: 
  1. 運行(正在運行或在運行隊列中等待) 
  2. 中斷(休眠中, 受阻, 在等待某個條件的造成或接受到信號) 
  3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生) 
  4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放) 
  5. 中止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行) 
 ps工具標識進程的5種狀態碼(分別對應上面的物種狀態): 
  R 運行 runnable (on run queue) 
  S 中斷 sleeping 
  D 不可中斷 uninterruptible sleep (usually IO) 
  Z 僵死 a defunct (」zombie」) process 
  T 中止 traced or stopped 
選項列表:
   a  顯示全部進程
   -a 顯示同一終端下的全部程序
   -A 顯示全部進程
   c  顯示進程的真實名稱
   -N 反向選擇
   -e 等於「-A」
   e  顯示環境變量
   f  顯示程序間的關係
   -H 顯示樹狀結構
   r  顯示當前終端的進程
   T  顯示當前終端的全部程序
   -u  指定用戶的全部進程
   -au 顯示較詳細的資訊
   -aux 顯示全部包含其餘使用者的行程 
   -C<命令> 列出指定命令的情況
   --lines<行數> 每頁顯示的行數
   --width<字符數> 每頁顯示的字符數
   --help 顯示幫助信息
   --version 顯示版本顯示函數

-A 顯示全部進程(等價於-e)(utility)
-a 顯示一個終端的全部進程,除了會話引線工具

-x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility)
-p pid 進程使用cpu的時間
-u uid or username 選擇有效的用戶id或者是用戶名ui

-f 所有列出,一般和其餘選項聯用。如:ps -fa or ps -fx and so on.
-l 長格式(有F,wchan,C 等字段)spa

-o 用戶自定義格式。命令行

三、經常使用選項組合方式:
  1)# ps aux  列出目前全部的正在內存當中的程序
   a:全部與終端相關的進程;
   x:全部與終端無關的進程;
   u:以用戶爲中心組織進程狀態信息顯示
  2)# ps -ef  顯示全部進程信息,連同命令行
   -e:顯示全部進程
   -f:顯示完整格式的進程信息
  3)# ps -ejH  以層級結構顯示進程的相關信息
    # ps -eFH 以層級結構顯示更加完整格式進程的相關信息,比-ejH更好用   
          -F:顯示完整格式的進程信息;
          C: cpu utilization
    PSR:運行於哪顆CPU之上
    -H:以層級結構顯示進程的相關信息
  4)自定義顯示字段信息
    組合方式:ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
           ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
           ps -eopid,tt,user,fname,tmout,f,wchan
    經常使用組合方式:# ps -eo
           # ps -axo
        o  field1, field2,...:自定義要顯示的字段列表,以逗號分隔
        用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
          ni:nice值
          pri:priority, 優先級
          rtprio:real time priority,實時優先級
1. 查看全部進程
$ ps ax線程

$ ps -e
加上 -f 或者 u 參數能夠顯示進程的詳細信息
$ ps auxserver

$ ps -ef
注:當用戶名超過8個字符時,以uid顯示;小於等於8字符時,以用戶名顯示。
2. 顯示某個用戶的進程
$ ps -f -u nova,neutron


名稱:ps
使用權限:全部使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動態
參數:ps的參數很是多, 在此僅列出幾個經常使用的參數並大略介紹含義
-A    列出全部的進程
-w    顯示加寬能夠顯示較多的資訊
-au    顯示較詳細的資訊
-aux    顯示全部包含其餘使用者的行程

############################################################

經常使用參數:

-A 顯示全部進程(等價於-e)(utility)
-a 顯示一個終端的全部進程,除了會話引線
-N 忽略選擇。
-d 顯示全部進程,但省略全部的會話引線(utility)
-x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility)
-p pid 進程使用cpu的時間
-u uid or username 選擇有效的用戶id或者是用戶名
-g gid or groupname 顯示組的全部進程。
U username 顯示該用戶下的全部進程,且顯示各個命令的詳細路徑。如:ps U zhang;(utility)
-f 所有列出,一般和其餘選項聯用。如:ps -fa or ps -fx and so on.
-l 長格式(有F,wchan,C 等字段)
-j 做業格式
-o 用戶自定義格式。
v 以虛擬存儲器格式顯示
s 以信號格式顯示
-m 顯示全部的線程
-H 顯示進程的層次(和其它的命令合用,如:ps -Ha)(utility)
e 命令以後顯示環境(如:ps -d e; ps -a e)(utility)
h 不顯示第一行

############################################################

ps命令經常使用用法(方便查看系統進程)

1)ps a 顯示現行終端機下的全部程序,包括其餘用戶的程序。
2)ps -A 顯示全部進程。
3)ps c 列出程序時,顯示每一個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
4)ps -e 此參數的效果和指定"A"參數相同。
5)ps e 列出程序時,顯示每一個程序所使用的環境變量。
6)ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係。
7)ps -H 顯示樹狀結構,表示程序間的相互關係。
8)ps -N 顯示全部的程序,除了執行ps指令終端機下的程序以外。
9)ps s 採用程序信號的格式顯示程序情況。
10)ps S 列出程序時,包括已中斷的子程序資料。
11)ps -t<終端機編號>  指定終端機編號,並列出屬於該終端機的程序的情況。
12)ps u  以用戶爲主的格式來顯示程序情況。
13)ps x  顯示全部程序,不以終端機來區分。
最經常使用的方法是ps -aux,而後再利用一個管道符號導向到grep去查找特定的進程,而後再對特定的進程進行操做。
分析ps返回結果信息,運行 ps aux 的到以下信息:

root:# ps aux
USER      PID       %CPU    %MEM    VSZ    RSS    TTY    STAT    START    TIME    COMMAND
smmsp    3521    0.0    0.7    6556    1616    ?    Ss    20:40    0:00    sendmail: Queue runner@01:00:00 f
root    3532    0.0    0.2    2428    452    ?    Ss    20:40    0:00    gpm -m /dev/input/mice -t imps2
htt    3563    0.0    0.0    2956    196    ?    Ss    20:41    0:00    /usr/sbin/htt -retryonerror 0
htt    3564    0.0    1.7    29460    3704    ?    Sl    20:41    0:00    htt_server -nodaemon
root    3574    0.0    0.4    5236    992    ?    Ss    20:41    0:00    crond
xfs    3617    0.0    1.3    13572    2804    ?    Ss    20:41    0:00    xfs -droppriv -daemon
root    3627    0.0    0.2    3448    552    ?    SNs    20:41    0:00    anacron -s
root    3636    0.0    0.1    2304    420    ?    Ss    20:41    0:00    /usr/sbin/atd
dbus    3655    0.0    0.5    13840    1084    ?    Ssl    20:41    0:00    dbus-daemon-1 --system
Head標頭:

USER    用戶名
UID    用戶ID(User ID)
PID    進程ID(Process ID)
PPID    父進程的進程ID(Parent Process id)
SID    會話ID(Session id)
%CPU    進程的cpu佔用率
%MEM    進程的內存佔用率
VSZ    進程所使用的虛存的大小(Virtual Size)
RSS    進程使用的駐留集大小或者是實際內存的大小,Kbytes字節。物理內存集,進程戰用實際物理內存空間
TTY    與進程關聯的終端(tty)
STAT    進程的狀態:進程狀態使用字符表示的(STAT的狀態碼)
R 運行    Runnable (on run queue)            正在運行或在運行隊列中等待。
S 睡眠    Sleeping                休眠中, 受阻, 在等待某個條件的造成或接受到信號。
I 空閒    Idle
Z 僵死    Zombie(a defunct process)        進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放。
D 不可中斷    Uninterruptible sleep (ususally IO)    收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生。
T 終止    Terminate                進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行。
P 等待交換頁
W 無駐留頁    has no resident pages        沒有足夠的記憶體分頁可分配。
X 死掉的進程
< 高優先級進程                    高優先序的進程
N 低優先    級進程                    低優先序的進程
L 內存鎖頁    Lock                有記憶體分頁分配並縮在記憶體內
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 相似 NPTL pthreads)
+ 位於後臺的進程組 

START    進程啓動時間和日期TIME    進程使用的總cpu時間COMMAND    正在執行的命令行命令NI    優先級(Nice)PRI    進程優先級編號(Priority)WCHAN    進程正在睡眠的內核函數名稱;該函數的名稱是從/root/system.map文件中得到的。FLAGS    與進程相關的數字標識

相關文章
相關標籤/搜索