eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« Aix常用命令收藏:内存和CPU消耗进程排序 | 文摘首页 | Sun CEO乔纳森·舒瓦茨就收购致Sun员工的信 »

AIX PS命令的详解 -- 进程性能监控
modb.pro

ps 命令 --- 摘自

用途

显示进程的当前状态。该文档描述了标准 AIX ps 命令,以及 ps 的 System V 版本命令。

语法

X/Open 标准

ps [ -A ] [ -N ] [ -a ] [ -d ] [ -e ] [ -f ] [ -k ] [ -l ] [ -F format] [ -o Format ] [ -c Clist ] [ -G Glist ] [ -g Glist ] [ -m ] [ -n NameList ] [ -p Plist ] [ -t Tlist ] [ -U Ulist ] [ -u Ulist ]

Berkeley 标准

ps [ a ] [ c ] [ e ] [ ew ] [ eww ] [ g ] [ n ] [ U ] [ w ] [ x ] [ l | s | u | v ] [ t Tty ] [ ProcessNumber ]

描述

ps 命令将活动进程的当前状态和(如果指定了 -m 标志)有关的内核线程写到标准输出中。注意当 -m 标志使用额外的行显示与进程相关的线程时,您必须使用 -o 标志连同 THREAD 字段说明符来显示额外的与线程相关的列。

不使用任何标志时,ps 命令显示关于当前工作站的信息。 -f-ol-lsuv 标志仅确定为该进程提供了多少信息;它们不确定列出哪些进程。 lsuv 标志互斥。

使用 -o 标志时,ps 命令检查内存或调页区域并确定进程创建时的命令名和参数是什么。如果 ps 命令不能找到该信息,存储在内核中的命令名显示在方括号中。

COLUMNS 环境变量覆盖系统选定的水平屏幕大小。

接受参数列表(-o-G-g-p-t-U-u 标志)的命令行标志的限制为 128 项。例如, -u Ulist 标志能指定不超过 128 个用户。

取决于 ps 命令使用的标志,列标题将显示在标准输出中显示的信息的上方。标题定义在以下列表中(使这些标题显示的标志在圆括号中显示):

ADDR
通常情况下,(-ll 标志)包含进程栈的段号;如果为内核进程,则为预处理数据区的地址。
BND
-o THREAD 标志)绑定内核线程的处理器(如果有)的逻辑处理器号。对一个进程来说,如果它的线程全都绑定到同一处理器上,则显示该字段。
C
-fl-l 标志)每次系统时钟周期和发现线程或进程需要运行时增加进程或线程的 CPU 利用率。调度程序通过每秒除 2 将该值衰减。对于 sched_other 策略,CPU 利用率用于确定进程调度优先级。大值表示一个 CPU 密集处理且造成更低的进程优先级而小值表示一个 I/O 密集处理且造成更高的优先级。
CMD
-f-ll 标志)包含命令名。使用 -f 标志显示完整命令名和它的参数。
COMMAND
suv)包含命令名。使用 -f 标志显示完整命令名和它的参数。

F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SWTED 0x00000010 表示进程在跟踪时停止。
SFWTED 0x00000020 表示在被跟踪时,调用 fork 子例程后进程停止。
SEWTED 0x00000040 表示在被跟踪时,调用 exec 子例程后进程停止。
SLWTED 0x00000080 表示在被跟踪时,调用 loadunload 子例程后进程停止。
SFIXPRI 0x00000100 表示该进程有固定的优先级,忽略 pcpu 字段描述符。
SKPROC 0x00000200 表示一个内核进程。
SOMASK 0x00000400 表示收到信号后恢复旧掩码。
SWAKEONSIG 0x00000800 表示该信号将异常终止 sleep 子例程。内容必须PCATCH 标志的内容相同。 PCATCHSWAKEONSIG 的内容必须大于 PMASK 的内容。
SUSER 0x00001000 表示该进程处在用户方式中。
SLKDONE 0x00002000 表示该进程已完成锁定。
STRACING 0x00004000 表示该进程是个调试进程。
SMPTRACE 0x00008000 表示多进程调试。
SEXIT 0x00010000 表示正退出进程。
SSEL 0x00020000 表示处理器正在选择:唤醒/等待危险。
SORPHANPGRP 0x00040000 表示一个孤立进程组。
SNOCNTLPROC 0x00080000 表示会话导带放弃了终端控制。
SPPNOCLDSTOP 0x00100000 表示当子进程停止时,SIGHLD 信号送到父进程。
SEXECED 0x00200000 表示已运行该进程。
SJOBSESS 0x00400000 表示在当前会话中使用作业控制。
SJOBOFF 0x00800000 表示该进程不受作业控制的影响。
PSIGDELIVERY 0x01000000 表示该进程被程序检查处理程序使用。
SRMSHM 0x02000000 表示调用 exit 子例程过程中,该进程除去了共享内存。
SSLOTFREE 0x04000000 表示进程槽空闲。
SNOMSG 0x08000000 表示没有其它 uprintf 子例程消息。
F
-ll 标志)与进程和线程相关的部分更重要 F 字段标志(十六进制和添加的)显示在下表中。

F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
SEXIT 0x00010000 表示正退出进程。
SEXECED 0x00200000 表示已运行该进程。
SEXECING 0x01000000 表示该进程正在执行(执行一个可执行程序)。
TKTHREAD 0x00001000 表示该线程是一个内核线程。
注:
可通过分别查询 /usr/include/sys/proc.h/usr/include/sys/thread.h 文件中的 p_flagst_flags 字段查看所有进程和线程标识的定义。
LIM
v 标志)通过调用 setrlimit 子例程指定内存使用的软限制。如果不指定限制则显示为 xx。如果将该限制设为系统限制,(没限制),显示值 UNLIM
NI
-ll 标志)为 sched other 策略计算优先级中使用的细调值。
PID
(所有标志)进程的进程标识。
PGIN
v 标志)处理未装入核心的页面引用产生的磁盘 I/O 的数目。
PPID
-fl-l 标志)父进程的进程标识。
PRI
-ll 标志)进程或内核线程的优先级;数字越大优先级越低。
RSS
v 标志)进程的实际内存(驻留集)大小(单位是 1KB)。
S
-ll 标志)进程或内核线程的状态:

对于进程:

O
不存在
A
活动
W
已交换
I
空闲(等待启动)
Z
已取消
T
已停止

对于内核线程:

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


SC
-o THREAD 标志)进程或内核线程的暂挂数。对进程来说,暂挂数定义为内核线程暂挂数的总和。
SCH
-o THREAD 标志)内核线程的调度策略。使用 012 分别显示策略 sched_othersched_fifosched_rr
SIZE
v 标志)进程数据节的虚拟大小(单位是 1 KB)。
SSIZ
s 标志)内核堆栈的大小。对于多线程进程,该值总为 0(零)。
STAT
suv 标志)包含进程状态:
0
不存在
A
活动
I
中间的
Z
已取消
T
已停止
K
可用的内核进程


STIME
-fu 标志)进程的启动时间。 LANG 环境变量控制该字段的外观。
SZ
-ll 标志)该进程核心映像的大小单位是 1KB。
THCNT
-o thcount 标志)进程拥有的内核线程数。
TID
-o THREAD 标志)内核线程的线程标识。
TIME
(所有标志)进程的执行时间总和。
TRS
v 标志)文本的驻留集(实际内存)大小。
TSIZ
v 标志)文本(共享程序)映像的大小。
TTY
(所有标志)进程的控制工作站:
-
进程与工作站不相关。
?
未知。
Number
TTY 数目。例如,条目 2 表示 TTY2。


UID
-f-ll 标志)进程所有者的用户标识。登录名在 -f 标志下打印。
USER
u 标志)进程所有者的登录名。
WCHAN
-l 标志)进程或内核线程为之等待或休眠的事件。对于内核线程,如果内核线程正在运行,该字段为空。对于进程,如果只有一个内核线程正在休眠,等待通道定义为该休眠内核线程的等待通道;否则显示一个星号。
WCHAN
l 标志)进程等待的事件(系统中的一个地址)。选择一个符号对地址分类,除非请求数字输出。
%CPU
uv 标志)进程启动后,该进程使用 CPU 的时间百分比。该值通过将进程使用 CPU 的时间除以进程所用时间计算。在多处理器环境中,因为同一进程中的几个线程可以同时在不同的 CPU 上运行,该值要进一步除以可用 CPU 数。(由于计算该数据基于的时间不同,所有 %CPU 字段的总和可能超过 100%。)
%MEM
uv 标志)进程使用的实际内存的百分比。 %MEM 往往会夸大与其它进程共享程序文本的进程的成本。但运行一个程序的多个副本和所有实例共享该程序文本的一个副本时不会计算时间。在该程序的每个实例中计算文本节的大小。这意味着如果运行一个程序的多个副本,所有进程的总 %MEM 值可以超过 100%。

进程已退出且有一个父进程,而父进程没有等待该进程,将该进程标志为 <defunct>。已阻塞且正在尝试退出的进程标志为 <exiting>ps 命令试图确定内存或交换区创建进程时给定的文件名和参数。

注:
  1. ps 命令运行时可以更改进程。为死进程显示的部分数据是不相关的。
  2. ps 程序检查内存来检索文件名和创建进程时使用的参数。然而,进程可以破坏信息,使检索文件名和参数的方法不可靠。

标志

下列标志前面有一个 -(负号):

-A 将关于所有进程的信息写到标准输出。
-a 将关于所有进程(除了会话导带和与终端无关的进程)的信息写到标准输出。
-c Clist 仅显示关于 Clist 变量列出的指定到工作负荷管理类的进程的信息。 Clist 变量或者是一个由逗号分开的类名列表或者是一个由双引号(" ")引起来的且之间用逗号或一个或多个空格或两者分隔的类名列表。
-d 将关于所有进程(除会话导带)的信息写到标准输出。
-e 将除内核进程以外所有进程的信息写到标准输出。
-F Format -o Format 相同
-f 生成一个完整列表。
-G Glist 仅将关于进程的信息写到标准输出,这些进程在为 Glist 变量列出的进程组中。 Glist 变量或者是一个由逗号分隔的进程组标识符列表或者是一个由双引号(" ")引起来的且之间用逗号或一个或多个空格或两者分隔的进程组标识符的列表。该标志与 -g Glist 标志等价。
-g Glist 该标志与 -G Glist 标志等价。
-k 列出内核进程。
-l 生成一长列表。另见 l 标志。
-m 列出内核线程和进程。进程的输出行后面跟着一额外输出行,它关于每个内核线程。该标志不显示特定于线程的字段(bndscountschedthcounttid),除非指定了适当的 -o 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
表示下列字段:
  • 用户名(uname 字段)
  • 进程的进程及父进程标识(pidppid 字段)
  • 线程的内核线程标识(tid 字段)
  • 进程或内核线程的状态(S 字段)
  • 进程或内核线程的 CPU 利用率(C 字段)
  • 进程或内核线程的优先级(PRI 字段)
  • 进程或内核线程的暂挂数( scount 字段)
  • 进程或内核线程的等待通道( WCHAN 字段)
  • 进程或内核线程的标志(F 字段)
  • 进程的控制终端(tty 字段)
  • 进程或内核线程绑定到的 CPU (bnd 字段)
  • 正在由进程执行的命令(comm 字段)

使用 -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 命令显示数字用户标识除非使用 -f 标志;然后命令显示登录名。该标志与 -u Ulist 标志等价。另见 u 标志。
-u Ulist 该标志与 -U Ulist 标志等价。

选项

下列标志前面不是 -(负号):

a 显示所有有终端的进程的信息(通常仅显示用户自己的进程)。
c 显示命令名,它存储在系统内用于记帐,而不显示保留在进程地址空间中的命令参数。
e 显示环境以及传递给命令的参数,最多不超过 80 个字符。
ew e 标志折行显示一额外行。
eww e 标志折行显示必要次。
g 显示所有进程。
l 显示一个长列表,具有 FSUIDPIDPPIDCPRINIADDRSZPSSWCHANTTYTIMECMD 字段。
n 显示数字输出。在长列表中,数字地而不是符号地打印 WCHAN 字段。在用户列表中,USER 字段替换为 UID 字段。
s 显示基本输出格式中每个进程(由系统维护人员使用)的内核栈的大小(SSIZ)。对于多线程进程,该值总为 0(零)。
t Tty 显示进程,它的控制 tty 为 Tty 变量的值,它应该指定为 ps 命令打印;也就是,0 对于终端 /dev/tty/0lft0 对于 /dev/lft0pts/2 对于 /dev/pts/2
u 显示面向用户的输出。这包括 USERPID%CPU%MEMSZRSSTTYSTATSTIMETIMECOMMAND 字段。
v 显示 PGINSIZERSSLIMTSIZTRS%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 命令。
/etc/passwd 指定用户标识信息。
/dev/pty* 表示工作站(PTY)名称。
/dev/tty* 表示工作站(TTY)名称。

相关信息

kill 命令和 nice 命令。

《AIX 5L V5.2 性能管理指南》 中的 Using ps to Identify CPU-Intensive Programs

System V ps 命令

语法

/usr/sysv/bin/ps [ -a ] [ -A ] [ -c ] [ -d ] [ -e ] [ -f ] [ -j ] [ -l ] [ -L ] [ -P ] [ -y ] [ -g pgrplist ] [ -o format ] [ -p proclist ] [ -s sidlist ] [ -t termlist ] [ { -u | -U } uidlist ] [ -G grplist ]

描述

ps 命令打印关于活动进程的信息。不使用标志,ps 打印与控制终端相关的进程的信息。输出包含进程标识、终端标识符、累计执行时间和命令名。随着标志的变化相应地显示信息。

输出

取决于 ps 命令使用的标志,列标题随着显示的信息变化。标题定义在下列列表中(使这些标题显示的标志在圆括号中显示):

F (-l)
与进程相关的标志(十六进制和添加的)或线程(如果指定了 -L 选项)。与进程和线程相关的部分更重要 F 字段标志(十六进制和添加的)显示在下表中:
F 字段表
标志 十六进制值 定义
SLOAD 0x00000001 表示该进程正在核心内存中操作。
SNOSWAP 0x00000002 表示该进程不能被交换出去。
STRC 0x00000008 表示该进程正被跟踪。
SKPROC 0x00000200 表示一个内核进程。
SEXIT 0x00010000 表示正退出进程。
SEXECED 0x00200000 表示已运行该进程。
SEXECING 0x01000000 表示该进程正在执行(执行一个可执行程序)。
TKTHREAD 0x00001000 表示该线程是一个仅内核线程。
注:
通过分别在/usr/include/sys/proc.h/usr/include/sys/thread.h 文件中查询 p_flagst_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)
进程的实际内存(驻留集)大小(单位是页)。

格式

下表描述了系统标识的字段描述符。可以连同 -o 标志使用这些字段描述符来指定 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

标志

部分标志接受列表作为参数。列表中的项或者可使用逗号分隔或者使用双引号引起来且之间用逗号或空格分隔。 proclistpgrplist 的值必须为数字。

-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 标志一起使用的字段说明符的描述在 Format 节的上面。
-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)名称。

历史上的今天...
    >> 2011-04-19文章:

By eygle on 2009-04-19 22:40 | Comments (0) | 软件工具 | 2290 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com