轉:AIX PS命令的詳解 -- 程式效能監控

luckyfriends發表於2013-02-27

eygle部落格轉過來的,大師的每篇文章都是娓娓道來,出處也明瞭,多研究多聯絡啊。

ps 命令 --- 摘自

用途

顯示程式的當前狀態。該文件描述了標準 AIX ps 命令,以及 命令。

語法

X/Open 標準

ps [ ] [ ] [ ] [ ] [ -e ] [ ] [ ] [ ] [ ] [ Format ] [ Clist ] [  Glist] [ Glist ] [ -m ] [ NameList ] [ Plist ] [ Tlist ] [ Ulist ] [ Ulist ]

Berkeley 標準

ps [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ | | | ] [  Tty ] [ProcessNumber ]

描述

ps 命令將活動程式的當前狀態和(如果指定了 -m 標誌)有關的核心執行緒寫到標準輸出中。注意當 -m標誌使用額外的行顯示與程式相關的執行緒時,您必須使用 -o 標誌連同 THREAD 欄位說明符來顯示額外的與執行緒相關的列。

不使用任何標誌時,ps 命令顯示關於當前工作站的資訊。 -f、-o、l、-l、s、u 和 v 標誌僅確定為該程式提供了多少資訊;它們不確定列出哪些程式。 l、s、u 和 v 標誌互斥。

使用 -o 標誌時,ps 命令檢查記憶體或調頁區域並確定程式建立時的命令名和引數是什麼。如果 ps 命令不能找到該資訊,儲存在核心中的命令名顯示在方括號中。

COLUMNS 環境變數覆蓋系統選定的水平螢幕大小。

接受引數列表(-o、-G、-g、-p、-t、-U 和 -u 標誌)的命令列標誌的限制為 128 項。例如, -u Ulist標誌能指定不超過 128 個使用者。

取決於 ps 命令使用的標誌,列標題將顯示在標準輸出中顯示的資訊的上方。標題定義在以下列表中(使這些標題顯示的標誌在圓括號中顯示):

ADDR通常情況下,(-l 和 l 標誌)包含程式棧的段號;如果為核心程式,則為預處理資料區的地址。BND(-o THREAD 標誌)繫結核心執行緒的處理器(如果有)的邏輯處理器號。對一個程式來說,如果它的執行緒全都繫結到同一處理器上,則顯示該欄位。C(-f、l 和 -l 標誌)每次系統時鐘週期和發現執行緒或程式需要執行時增加程式或執行緒的 CPU 利用率。排程程式透過每秒除 2 將該值衰減。對於 sched_other 策略,CPU 利用率用於確定程式排程優先順序。大值表示一個 CPU 密集處理且造成更低的程式優先順序而小值表示一個 I/O 密集處理且造成更高的優先順序。CMD(-f、-l 和 l 標誌)包含命令名。使用 -f 標誌顯示完整命令名和它的引數。COMMAND(s、u 和 v)包含命令名。使用 -f 標誌顯示完整命令名和它的引數。

F 欄位表
標誌十六進位制值定義
SLOAD0x00000001表示該程式正在核心記憶體中操作。
SNOSWAP0x00000002表示該程式不能被交換出去。
STRC0x00000008表示該程式正被跟蹤。
SWTED0x00000010表示程式在跟蹤時停止。
SFWTED0x00000020表示在被跟蹤時,呼叫 fork 子例程後程式停止。
SEWTED0x00000040表示在被跟蹤時,呼叫 exec 子例程後程式停止。
SLWTED0x00000080表示在被跟蹤時,呼叫 load 或 unload 子例程後程式停止。
SFIXPRI0x00000100表示該程式有固定的優先順序,忽略 pcpu 欄位描述符。
SKPROC0x00000200表示一個核心程式。
SOMASK0x00000400表示收到訊號後恢復舊掩碼。
SWAKEONSIG0x00000800表示該訊號將異常終止 sleep 子例程。內容必須不與 PCATCH 標誌的內容相同。 PCATCH 和SWAKEONSIG 的內容必須大於 PMASK 的內容。
SUSER0x00001000表示該程式處在使用者方式中。
SLKDONE0x00002000表示該程式已完成鎖定。
STRACING0x00004000表示該程式是個除錯程式。
SMPTRACE0x00008000表示多程式除錯。
SEXIT0x00010000表示正退出程式。
SSEL0x00020000表示處理器正在選擇:喚醒/等待危險。
SORPHANPGRP0x00040000表示一個孤立程式組。
SNOCNTLPROC0x00080000表示會話導帶放棄了終端控制。
SPPNOCLDSTOP0x00100000表示當子程式停止時,SIGHLD 訊號不送到父程式。
SEXECED0x00200000表示已執行該程式。
SJOBSESS0x00400000表示在當前會話中使用作業控制。
SJOBOFF0x00800000表示該程式不受作業控制的影響。
PSIGDELIVERY0x01000000表示該程式被程式檢查處理程式使用。
SRMSHM0x02000000表示呼叫 exit 子例程過程中,該程式除去了共享記憶體。
SSLOTFREE0x04000000表示程式槽空閒。
SNOMSG0x08000000表示沒有其它 uprintf 子例程訊息。
F(-l 和 l 標誌)與程式和執行緒相關的部分更重要 F 欄位標誌(十六進位制和新增的)顯示在下表中。

F 欄位表
標誌十六進位制值定義
SLOAD0x00000001表示該程式正在核心記憶體中操作。
SNOSWAP0x00000002表示該程式不能被交換出去。
STRC0x00000008表示該程式正被跟蹤。
SKPROC0x00000200表示一個核心程式。
SEXIT0x00010000表示正退出程式。
SEXECED0x00200000表示已執行該程式。
SEXECING0x01000000表示該程式正在執行(執行一個可執行程式)。
TKTHREAD0x00001000表示該執行緒是一個核心執行緒。
注:
可透過分別查詢 /usr/include/sys/proc.h 和 /usr/include/sys/thread.h 檔案中的 p_flags 和 t_flags 欄位檢視所有程式和執行緒標識的定義。
LIM(v 標誌)透過呼叫 setrlimit 子例程指定記憶體使用的軟限制。如果不指定限制則顯示為 xx。如果將該限制設為系統限制,(沒限制),顯示值 UNLIM。NI(-l 和 l 標誌)為 sched other 策略計算優先順序中使用的細調值。PID(所有標誌)程式的程式標識。PGIN(v 標誌)處理未裝入核心的頁面引用產生的磁碟 I/O 的數目。PPID(-f、l 和 -l 標誌)父程式的程式標識。PRI(-l 和 l 標誌)程式或核心執行緒的優先順序;數字越大優先順序越低。RSS(v 標誌)程式的實際記憶體(駐留集)大小(單位是 1KB)。S(-l 和 l 標誌)程式或核心執行緒的狀態:

對於程式:

O不存在A活動W已交換I空閒(等待啟動)Z已取消T已停止

對於核心執行緒:

O不存在R正在執行S正在休眠W已交換Z已取消T已停止

SC(-o THREAD 標誌)程式或核心執行緒的暫掛數。對程式來說,暫掛數定義為核心執行緒暫掛數的總和。SCH(-o THREAD 標誌)核心執行緒的排程策略。使用 01 和 2 分別顯示策略sched_othersched_fifo 和 sched_rr。SIZE(v 標誌)程式資料節的虛擬大小(單位是 1 KB)。SSIZ(s 標誌)核心堆疊的大小。對於多執行緒程式,該值總為 0(零)。STAT(s、u 和 v 標誌)包含程式狀態:0不存在A活動I中間的Z已取消T已停止K可用的核心程式

STIME(-f 和 u 標誌)程式的啟動時間。 LANG 環境變數控制該欄位的外觀。SZ(-l 和 l 標誌)該程式核心映像的大小單位是 1KB。THCNT(-o thcount 標誌)程式擁有的核心執行緒數。TID(-o THREAD 標誌)核心執行緒的執行緒標識。TIME(所有標誌)程式的執行時間總和。TRS(v 標誌)文字的駐留集(實際記憶體)大小。TSIZ(v 標誌)文字(共享程式)映像的大小。TTY(所有標誌)程式的控制工作站:-程式與工作站不相關。?未知。NumberTTY 數目。例如,條目 2 表示 TTY2。

UID(-f、-l 和 l 標誌)程式所有者的使用者標識。登入名在 -f 標誌下列印。USER(u 標誌)程式所有者的登入名。WCHAN(-l 標誌)程式或核心執行緒為之等待或休眠的事件。對於核心執行緒,如果核心執行緒正在執行,該欄位為空。對於程式,如果只有一個核心執行緒正在休眠,等待通道定義為該休眠核心執行緒的等待通道;否則顯示一個星號。WCHAN(l 標誌)程式等待的事件(系統中的一個地址)。選擇一個符號對地址分類,除非請求數字輸出。%CPU(u 和 v 標誌)程式啟動後,該程式使用 CPU 的時間百分比。該值透過將程式使用 CPU 的時間除以程式所用時間計算。在多處理器環境中,因為同一程式中的幾個執行緒可以同時在不同的 CPU 上執行,該值要進一步除以可用 CPU 數。(由於計算該資料基於的時間不同,所有 %CPU 欄位的總和可能超過 100%。)%MEM(u 和 v 標誌)程式使用的實際記憶體的百分比。 %MEM 往往會誇大與其它程式共享程式文字的程式的成本。但執行一個程式的多個副本和所有例項共享該程式文字的一個副本時不會計算時間。在該程式的每個例項中計算文字節的大小。這意味著如果執行一個程式的多個副本,所有程式的總 %MEM 值可以超過 100%。

程式已退出且有一個父程式,而父程式沒有等待該程式,將該程式標誌為 。已阻塞且正在嘗試退出的程式標誌為 。ps 命令試圖確定記憶體或交換區建立程式時給定的檔名和引數。

注:
  1. 當 ps 命令執行時可以更改程式。為死程式顯示的部分資料是不相關的。
  2. ps 程式檢查記憶體來檢索檔名和建立程式時使用的引數。然而,程式可以破壞資訊,使檢索檔名和引數的方法不可靠。

標誌

下列標誌前面有一個 -(負號):

-A將關於所有程式的資訊寫到標準輸出。
-a將關於所有程式(除了會話導帶和與終端無關的程式)的資訊寫到標準輸出。
-c Clist僅顯示關於 Clist 變數列出的指定到工作負荷管理類的程式的資訊。 Clist 變數或者是一個由逗號分開的類名列表或者是一個由雙引號(" ")引起來的且之間用逗號或一個或多個空格或兩者分隔的類名列表。
-d將關於所有程式(除會話導帶)的資訊寫到標準輸出。
-e將除核心程式以外所有程式的資訊寫到標準輸出。
-F Format與 -o Format 相同
-f生成一個完整列表。
-G Glist僅將關於程式的資訊寫到標準輸出,這些程式在為 Glist 變數列出的程式組中。 Glist 變數或者是一個由逗號分隔的程式組識別符號列表或者是一個由雙引號(" ")引起來的且之間用逗號或一個或多個空格或兩者分隔的程式組識別符號的列表。該標誌與  Glist 標誌等價。
-g Glist該標誌與  Glist 標誌等價。
-k列出核心程式。
-l生成一長列表。另見  標誌。
-m列出核心執行緒和程式。程式的輸出行後面跟著一額外輸出行,它關於每個核心執行緒。該標誌不顯示特定於執行緒的欄位(、、、 和 ),除非指定了適當的  Format 標誌。
-N不聚集執行緒統計資訊。使用該標誌後,ps 報告那些可以透過不遍歷程式的執行緒鏈來獲得那些統計資訊。
-n NameList指定備用系統名稱列表檔案來替換預設系統名稱列表檔案。因為直接提供資訊給核心,作業系統不使用 -n 標誌。
-o Format以 Format 變數指定的格式顯示資訊。可以為 Format 變數指定多個欄位說明符。Format 變數或者是一個由逗號分隔的欄位說明符列表或是一個由""(雙引號)引起來的之間用逗號或一個或多個空格或兩者分隔的說明符列表。

每個欄位說明符有一個預設頭。透過為頭附加一個=(等號),後跟使用者定義的文字,可以覆蓋預設頭。寫欄位的順序採用命令列中列格式指定的方式。欄位寬度由系統指定,它至少為預設的或使用者定義的頭文字寬度。如果頭文字為空,(例如如果指定 -o user=),欄位寬度至少為預設頭文字寬度。如果所有頭欄位都為空,不寫頭行。

系統標識下列欄位說明符:

args說明正在執行的完整命令名。包含所有命令列引數,儘管可能發生截斷。該欄位的預設頭為 COMMAND。bnd表示程式或核心執行緒繫結到哪個(如果有)處理器。該欄位的預設頭為BND。class表示為該程式分配的工作負荷管理類。該欄位的預設頭為 CLASS。comm表示正在執行的命令的短名稱。不包含命令列引數。該欄位的預設頭為COMMAND。cpu確定程式排程優先順序。每次系統時鐘週期和發現程式或執行緒執行時增加程式或執行緒的 CPU 利用率。排程程式透過每秒除 2 將該值衰減。對於 sched_other 策略,大值表示一個 CPU 密集處理且造成更低的程式優先順序而小值表示一個 I/O 密集處理且造成更高的優先順序。etime表示程式啟動後所用的時間。所用時間以下列格式顯示:

[[ dd-]hh:]mm:ss

其中 dd 指定天數,hh 指定小時數,mm 指定分鐘數及 ss 指定秒數。該欄位的預設頭為 ELAPSED。

group表示該程式的有效組標識。顯示文字組標識。如果不能得到文字組標識,使用十進位制表示。該欄位的預設頭為 GROUP。nice表示程式細調值的十進位制值。該欄位的預設頭為 NI。
-o Format(續)pcpu表示使用的 CPU 時間佔可用 CPU 時間的比例,以百分比表示。該欄位的預設頭為 %CPU。pgid表示程式組標識的十進位制值。該欄位的預設頭為 PGID。pid表示程式標識的十進位制值。該欄位的預設頭為 PID。ppid表示父程式標識的十進位制值。該欄位的預設頭為 PPID。rgroup表示該程式的實際組標識。顯示文字組標識。如果不能得到文字組標識,使用十進位制表示。該欄位的預設頭為 RGROUP。ruser表示該程式的實際使用者標識。顯示文字使用者標識。如果不能得到文字使用者標識,使用十進位制表示。該欄位的預設頭為 RUSER。scount表示核心執行緒的暫掛數。該欄位的預設頭為 SC。sched表示核心執行緒的排程策略。該欄位的預設頭為 SCH。tag表示工作負荷管理器應用程式標記。該欄位的預設頭為 TAG。該標記為一個字串,它不超過 30 個字元長且由 ps 顯示時可能會截斷。對於不設定標記的程式,該欄位顯示為一個 -(連字元)。tcpu總 CPU 時間。指示單個程式的總累積 CPU 時間。該欄位的預設頭為TCPU。tctime總連線時間。指示登入會話可會活動時的時間總量。這僅在會話引導程式中才有意義。該欄位的預設頭為 TCTIME。tdiskio總磁碟 I/O。指示單個程式的 I/O 的總累積塊數。該欄位的預設頭為TDISKIO。
-o Format(續)thcount表示該程式擁有的核心執行緒數。該欄位的預設頭為 THCNT。THREAD表示下列欄位:
  • 使用者名稱( 欄位)
  • 程式的程式及父程式標識( 和  欄位)
  • 執行緒的核心執行緒標識( 欄位)
  • 程式或核心執行緒的狀態( 欄位)
  • 程式或核心執行緒的 CPU 利用率( 欄位)
  • 程式或核心執行緒的優先順序( 欄位)
  • 程式或核心執行緒的暫掛數(  欄位)
  • 程式或核心執行緒的等待通道(  欄位)
  • 程式或核心執行緒的標誌( 欄位)
  • 程式的控制終端( 欄位)
  • 程式或核心執行緒繫結到的 CPU ( 欄位)
  • 正在由程式執行的命令( 欄位)

使用 -o THREAD 標誌實際上不顯示執行緒,除非也指定 -m 標誌。

tid表示核心執行緒的執行緒標識。該欄位的預設頭為 TID。time表示程式啟動後的累計 CPU 時間。時間以下列格式顯示:

[ dd-]hh:mm:ss

其中 dd 指定天數,hh 指定小時數,mm 指定分鐘數及 ss 指定秒數。該欄位的預設頭為 TIME。

tty表示該程式的控制終端名。該欄位的預設頭為 TT。user表示該程式的有效使用者標識。顯示文字使用者標識。如果不能得到文字使用者標識,使用十進位制表示。該欄位的預設頭為 USER。vsz使用十進位制整數表示虛擬記憶體中程式的大小,以千位元組為單位。該欄位的預設頭為 VSZ。
-o Format(續)

否則,透過 Format 變數,可以顯示指定格式的多個欄位,包括欄位描述符。如果在 Format 變數中使用欄位描述符,它必須包含在雙引號(" ")內。下表顯示了欄位描述符如何對應欄位說明符:

欄位            欄位            預設值
描述符 說明符 頭

%a args COMMAND
%c comm COMMAND
%t etime ELAPSED
%G group GROUP
%n nice NI
%C pcpu %CPU
%r pgid PGID
%p pid PID
%P ppid PPID
%g rgroup RGROUP
%u ruser RUSER
%x time TIME
%y tty TTY
%U user USER
%z vsz VSZ
-p Plist僅顯示關於 Plist 變數指定的程式號的程式的資訊。 Plist 變數或者是一個由逗號分隔的程式標誌號列表或者是一個由雙引號(" ")引起來的且之間用逗號或一個或多個空格或兩者分隔的程式標識號列表。
-t Tlist僅顯示與 Tlist 變數中列出的工作站相關的程式的資訊。 Tlist 變數或者是一個由逗號分隔的工作站識別符號列表或者是一個雙引號(" ")引起來的且之間用逗號或一個或多個空格或兩者分隔的工作站識別符號列表。
-U Ulist僅顯示關於 Ulist 變數指定的使用者標識號或登入名的程式的資訊。 Ulist 變數或者是一個由逗號分隔的使用者標識列表或者是一個由雙引號(" ")引起來的且之間用逗號或一個或多個空格或兩者分隔的使用者標識列表。在該列表中,ps 命令顯示數字使用者標識除非使用  標誌;然後命令顯示登入名。該標誌與  Ulist 標誌等價。另見  標誌。
-u Ulist該標誌與  Ulist 標誌等價。

選項

下列標誌前面不是 -(負號):

a顯示所有有終端的程式的資訊(通常僅顯示使用者自己的程式)。
c顯示命令名,它儲存在系統內用於記帳,而不顯示保留在程式地址空間中的命令引數。
e顯示環境以及傳遞給命令的引數,最多不超過 80 個字元。
ew從 e 標誌折行顯示一額外行。
eww從 e 標誌折行顯示必要次。
g顯示所有程式。
l顯示一個長列表,具有F、S、UID、PID、PPID、C、PRI、NI、ADDR、SZ、PSS、WCHAN、TTY、TIME 和 CMD 欄位。
n顯示數字輸出。在長列表中,數字地而不是符號地列印 WCHAN 欄位。在使用者列表中,USER欄位替換為 UID 欄位。
s顯示基本輸出格式中每個程式(由系統維護人員使用)的核心棧的大小(SSIZ)。對於多執行緒程式,該值總為 0(零)。
t Tty顯示程式,它的控制 tty 為 Tty 變數的值,它應該指定為 ps 命令列印;也就是,0 對於終端/dev/tty/0、lft0 對於 /dev/lft0 及 pts/2 對於 /dev/pts/2。
u顯示面向使用者的輸出。這包括USER、PID、%CPU、%MEM、SZ、RSS、TTY、STAT、STIME、TIME 和 COMMAND 欄位。
v顯示 PGIN、SIZE、RSS、LIM、TSIZ、TRS、%CPU 和 %MEM 欄位。
w為輸出指定一寬列格式(132 列而不是 80 列)。如果重複,(例如, ww),任意地使用寬輸出。此資訊用於決定要列印的長命令有多少。
x顯示沒有終端的程式除了有一個控制終端的程式。

退出狀態

該命令返回以下出口值:

0成功完成。
>0發生錯誤。

示例

  1. 要顯示所有程式,請輸入:
    ps -e -f
  2. 要列出特定使用者擁有的程式,請輸入:
    ps -f -l -ujim,jane,su
  3. 要列出與 /dev/console 和 /dev/tty1 ttys 相關的程式,請輸入:
    ps -t console,tty/1
  4. 要列出與終端無關的程式,請輸入:
    ps -t -
  5. 要使用欄位描述符顯示指定的格式,請輸入:
    ps -o ruser,pid,ppid=parent,args

    輸出為:

    RUSER   PID     parent  COMMAND
    helene 34 12 ps -o ruser,pid,ppid=parent,args
  6. 要使用欄位描述符顯示指定的格式,請輸入:
    ps -o "< %u > %p %y : %a"

    輸出為:

    < RUSER  >      PID     TT :    COMMAND
    < helene > 34 pts/3 : ps -o < %u > %p %y : %a
  7. 要顯示關於由當前終端控制的程式和核心執行緒的資訊,請輸入:
    ps -lm

    輸出類似於:

         F S UID  PID PPID  C PRI NI ADDR  SZ WCHAN   TTY  TIME  CMD
    240003 A 26 8984 7190 1 60 20 2974 312 pts/1 0:00 -ksh
    400 S - - - 1 60 - - - - - -
    200005 A 26 9256 8984 15 67 20 18ed 164 pts/1 0:00 ps
    0 R - - - 15 67 - - - - - -
  8. 要顯示關於所有程式和核心執行緒的資訊,請輸入:
    ps -emo THREAD

    輸出類似於:

    USER   PID  PPID  TID S  C PRI SC   WCHAN   FLAG   TTY BND  CMD
    jane 1716 19292 - A 10 60 1 * 260801 pts/7 - biod
    - - - 4863 S 0 60 0 599e9d8 8400 - - -
    - - - 5537 R 10 60 1 5999e18 2420 - 3 -
    luke 19292 18524 - A 0 60 0 586ad84 200001 pts/7 - -ksh
    - - - 7617 S 0 60 0 586ad84 400 - - -
    luke 25864 31168 - A 11 65 0 - 200001 pts/7 - -
    - - - 8993 R 11 65 0 - 0 - - -

檔案

/usr/bin/ps包含 ps 命令。
指定使用者標識資訊。
/dev/pty*表示工作站(PTY)名稱。
/dev/tty*表示工作站(TTY)名稱。

相關資訊

 命令和  命令。

《AIX 5L V5.2 效能管理指南》 中的 。

System V ps 命令

語法

/usr/sysv/bin/ps [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  pgrplist ] [ format ] [  proclist ] [  sidlist ] [  termlist ] [ {  |  } uidlist ] [  grplist ]

描述

ps 命令列印關於活動程式的資訊。不使用標誌,ps 列印與控制終端相關的程式的資訊。輸出包含程式標識、終端識別符號、累計執行時間和命令名。隨著標誌的變化相應地顯示資訊。

輸出

取決於 ps 命令使用的標誌,列標題隨著顯示的資訊變化。標題定義在下列列表中(使這些標題顯示的標誌在圓括號中顯示):

F (-l)與程式相關的標誌(十六進位制和新增的)或執行緒(如果指定了 -L 選項)。與程式和執行緒相關的部分更重要 F 欄位標誌(十六進位制和新增的)顯示在下表中:
F 欄位表
標誌十六進位制值定義
SLOAD0x00000001表示該程式正在核心記憶體中操作。
SNOSWAP0x00000002表示該程式不能被交換出去。
STRC0x00000008表示該程式正被跟蹤。
SKPROC0x00000200表示一個核心程式。
SEXIT0x00010000表示正退出程式。
SEXECED0x00200000表示已執行該程式。
SEXECING0x01000000表示該程式正在執行(執行一個可執行程式)。
TKTHREAD0x00001000表示該執行緒是一個僅核心執行緒。
注:
透過分別在/usr/include/sys/proc.h 和 /usr/include/sys/thread.h 檔案中查詢 p_flags 和 t_flags 欄位,能看到所有程式和執行緒的定義。
S (-l)程式或核心執行緒的狀態:

對於程式:

O不存在A活動W已交換I空閒Z已取消T已停止

對於核心執行緒:

O不存在R正在執行S正在休眠W已交換Z已取消T已停止UID (-f,- l)程式的使用者標識號(登入名在 -f 選項下列印)。PID (all)程式的程式標識。PPID (-f,-l)父程式的程式標識。CLS (-c)程式的排程類。僅在使用 -c 標誌時列印。NI (-l)為 sched_other 策略計算優先順序中使用的程式細調值。PRI (-c, -l)程式或核心執行緒的優先順序。數字越大,優先順序越低。ADDR (-l)通常情況下,包含程式棧的段號;如果為核心程式,則為預處理資料區的地址。SZ (-l)程式的核心映像的頁面大小。WCHAN(-l)程式或核心執行緒為之等待或休眠的事件。對於核心執行緒,如果核心執行緒正在執行,該欄位為空。對於程式,如果只有一個核心執行緒正在休眠,等待通道定義為該休眠核心執行緒的等待通道;否則顯示一個星號。STIME (-f,-u)程式的啟動時間。LANG 環境變數控制該欄位的外觀。TTY (all)程式的控制工作站。-程式與工作站不相關。?未知TIME (all)程式的執行時間總和。LTIME (-L)單個 LWP 的執行時間。CMD (all)包含命令名。使用 -f 標誌顯示完整命令名和它的引數。LWP (-L)核心執行緒的 tid。NLWP(-Lf)程式中核心執行緒的數目。PSR (-P)繫結核心執行緒的處理器(如果有)的邏輯處理器號。對一個程式來說,如果它的執行緒全都繫結到同一處理器上,則顯示該欄位。RSS (-ly)程式的實際記憶體(駐留集)大小(單位是頁)。

格式

下表描述了系統標識的欄位描述符。可以連同  標誌使用這些欄位描述符來指定 ps 命令的輸出格式。

系統標識的欄位描述符為:

addr通常情況下,表示程式棧的段號;如果為核心程式,則為預處理資料區的地址。該欄位的預設頭為ADDR。args說明正在執行的完整命令名。包含所有命令列引數,儘管可能發生截斷。該欄位的預設頭為COMMAND。c每次系統時鐘週期和發現程式或執行緒執行時增加程式或執行緒的 CPU 利用率。排程程式透過每秒除 2 將該值衰減。對於 sched_other 策略,CPU 利用率用於確定程式排程優先順序。大值表示一個 CPU 密集處理且造成更低的程式優先順序而小值表示一個 I/O 密集處理且造成更高的優先順序。該欄位的預設頭為C。class表示核心執行緒的排程策略。策略為 sched_other、sched_fifo 和 sched_rr。該欄位的預設頭為 CLS。comm表示正在執行的命令的短名稱。不包含命令列引數。該欄位的預設頭為 COMMAND。etime表示程式啟動後所用的時間。所用時間以該格式顯示:
[[ dd -] hh: ]mm :ss
其中 dd 指定天數,hh 指定小時數,mm 指定分鐘數及 ss 指定秒數。

該欄位的預設頭為 ELAPSED。

f與程式相關的標誌(十六進位制和新增的)。該欄位的預設頭為 COMMAND。fname表示程式的可執行檔案的基礎名的前 8 個位元組。該欄位的預設頭為 COMMAND。gid使用一個十進位制整數表示該程式的有效組標識號。該欄位的預設頭為 GID。group表示該程式的有效組標識。顯示文字組標識。如果不能得到文字組標識,使用十進位制表示。該欄位的預設頭為 GROUP。lwp表示該核心執行緒的執行緒標識。該欄位的預設頭為 TID。nice表示程式細調值的十進位制值。該欄位的預設頭為 NI。nlwp表示該程式擁有的核心執行緒數。該欄位的預設頭為 THCNT。pcpu表示使用的 CPU 時間佔可用 CPU 時間的比例,以百分比表示。該欄位的預設頭為 %CPU。pgid表示程式組標識的十進位制值。該欄位的預設頭為 PGID。pid表示程式標識的十進位制值。該欄位的預設頭為 PID。pmem表示程式使用的實際記憶體的百分比。該欄位的預設頭為 %MEM。ppid表示父程式標識的十進位制值。該欄位的預設頭為 PPID。pri表示程式或核心執行緒的優先順序;數字越大優先順序越低。該欄位的預設頭為 PRI。psr表示繫結核心執行緒的處理器(如果有)的邏輯處理器號。該欄位的預設頭為 PSR。rgid使用一個十進位制整數表示該程式的實際組標識號。該欄位的預設頭為 RGID。rgroup表示該程式的實際組標識。顯示文字組標識。如果不能得到文字組標識,使用十進位制表示。該欄位的預設頭為 RGROUP。rss表示該程式的實際記憶體(駐留集)大小(單位是 1 KB)。該欄位的預設頭為 RSS。ruid使用一個十進位制整數表示該程式的實際使用者標識號。該欄位的預設頭為 RUID。ruser表示該程式的實際使用者標識。顯示文字使用者標識。如果不能得到文字使用者標識,使用十進位制表示。該欄位的預設頭為 RUSER。s表示該程式的狀態。該欄位的預設頭為 S。sid表示會話導帶的程式標識。該欄位的預設頭為 SID。stime表示程式的啟動時間。LANG 環境變數控制該欄位的外觀。該欄位的預設頭為 STIME。time表示程式啟動後的累計 CPU 時間。時間顯示的格式同 etime 中的格式。該欄位的預設頭為 TIME。tty表示該程式的控制終端名。該欄位的預設頭為 TT。uid使用一個十進位制整數表示該程式的有效使用者標識號。該欄位的預設頭為 UID。user表示該程式的有效使用者標識。顯示文字使用者標識。如果不能得到文字使用者標識,使用十進位制表示。該欄位的預設頭為 USER。vsz使用一個十進位制整數表示該程式的核心映像,以千位元組為單位。該欄位的預設頭為 VSZ。wchan表示該程式或核心執行緒為之等待或休眠的事件。對於核心執行緒,如果核心執行緒正在執行,該欄位為空。對於程式,如果只有一個核心執行緒正在休眠,等待通道定義為該休眠核心執行緒的等待通道;否則顯示一個星號。

該欄位的預設頭為 WCHAN。

標誌

部分標誌接受列表作為引數。列表中的項或者可使用逗號分隔或者使用雙引號引起來且之間用逗號或空格分隔。 proclist 和 pgrplist 的值必須為數字。

-a將關於所有程式(除了會話導帶和與終端無關的程式)的資訊寫到標準輸出。
-A將關於所有程式的資訊寫到標準輸出。
-c以反映排程程式屬性的格式列印資訊。 -c 標誌影響 -f 和 -l 標誌的輸出,描述如下。
-d將關於所有程式(除會話導帶)的資訊寫到標準輸出。
-e將除核心程式以外所有程式的資訊寫到標準輸出。
-f生成一個完整列表。
-g pgrplist僅將關於在由 pgrplist 指定的程式組中的程式的資訊寫到標準輸出。 pgrplist的值必須為數字。
-G grplist僅將關於由 grplist 指定的程式組中的程式的資訊寫到標準輸出。 -G 標誌接受組名。
-j顯示會話標識和程式組標識。
-l生成一長列表。
-L列印程式中活動執行緒的狀態。
-o format以 format 變數指定的格式顯示資訊。可以為非 format 變數指定多個欄位說明符。可以連同 -o 標誌一起使用的欄位說明符的描述在  節的上面。
-p proclist僅顯示關於 proclist 指定的程式號的程式的資訊。 proclist 的值必須為數字。
-P顯示程式的主核心執行緒繫結到的處理器(如果有)的邏輯處理器號。
-s sidlist顯示會話導帶標識由 sidlist 指定的所有執行緒。
-t termlist僅顯示與 termlist 指定的終端相關的程式的資訊。
-u uidlist僅顯示關於 uidlist 指定的使用者標識號或登入名的程式的資訊。
-U uidlist僅顯示關於 uidlist 指定的使用者標識號或登入名的程式的資訊。
-y當與 -l 選項結合時,改變長列表以便它以千位元組列印"RSS"和"SZ"且不列印"F"和"ADDR"欄位。

退出狀態

該命令返回以下出口值:

0成功完成。
>0發生錯誤。

示例

  1. 要顯示所有程式,請輸入:
    ps -e -f
  2. 要列出使用者"guest"擁有的程式,請輸入:
    ps -f -l -u guest 
  3. 要列出與 /dev/pts/0 和 /dev/pts/1 終端相關的程式,請輸入:
    ps -t pts/0,pts/1
  4. 要列出與終端無關的程式,請輸入:
    ps -t -
  5. 要使用欄位說明符顯示指定的格式,請輸入:
    ps -o ruser,pid,ppid,args
  6. 要顯示關於程式中所有核心執行緒的資訊,請輸入:
    ps -L
  7. 要顯示所有程式的會話標識和程式組標識,請輸入:
    ps -jA
  8. 要顯示排程類和程式的優先順序,請輸入:
    ps -c -l 
  9. 要顯示程式中核心執行緒的資訊及核心執行緒數,請輸入:
    ps -L -f 
  10. 要顯示程式或核心執行緒繫結到的處理器,請輸入:
    ps  -P


檔案

/usr/sysv/bin/ps包含 System V R4 ps 命令。
/etc/passwd包含使用者標識資訊。
/dev/pty*表示工作站(PTY)名稱。
/dev/tty*表示工作站(TTY)名稱。


(1)顯示10個消耗cpu最多的程式

  # ps aux |head -1 ;ps aux |sort -rn +2 |head -10

(2)顯示10個消耗記憶體最多的程式

  #ps vx |head -1 ;ps vx |grep -v PID |sort -rn +6 |head -10

(3)顯示10個換頁最多的程式

  #ps vx |head -1 ;ps vx |grep -v PID |sort -rn +4 |head -10

(4)顯示10個消耗儲存空間最多的程式

  #ps aux |head -1 ;ps aux |sort -rn +3 |head -10

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-754814/,如需轉載,請註明出處,否則將追究法律責任。

相關文章