ps和pstree是用于系统分析的基本命令。ps有3中不同风格的命令选项,UNIX风格、BSD风格和GNU风格。这里我们只介绍UNIX风格选项。
ps命令可以显示当前运行的进程列表。top命令也可以显示进程信息,但ps可以提供更加详细的内容。使用相应选项可以影响进程显示的数量。ps -A命令可以列出所有进程及其相应的进程ID(PID),当我们使用如pmap或renice等工具时会用到此PID。
当系统运行java应用时,ps -A产生的输出结果很容易填满整个显示区域,这导致很难得到所有运行中进程的完整视图。在这种情况下,pstree命令就派上用场了,它使用树状显示所有运行中的进程并合并所有的子进程(例如java线程),pstree命令有助于确认原始进程。还有另一个ps变种pgrep也非常有用。
例子2-4:ps输出示例

下面我们来了解一些常用的选项
-e :所有进程。等同于-A
-l :显示长格式
-F :附加全格式
-H :显示进程的层次结构
-L :显示线程,可能出现LWP和NLWP栏位
-m :在进程后显示线程
下面的命令演示输出进程的详细信息:
ps -elFL
例子2-5:输出进程详细信息示例
2d1dc7cb71e8e92d7e3e6fe7.jpg
输出栏位说明:
F :进程标志
S :进程状态。S=sleeping,R=running,T=stopped/traced,D=interruptable sleep,Z=zombie。参见1.1.7“进程状态”中关于这些状态的介绍。
UID :进程所有者(可能是启动者)用户名
PID :进程ID
PPID :父进程ID
LWP :LWP(轻量级进程【light weight process】,也称作线程)ID
C :处理器使用率百分比
NLWP :进程中lwp(线程)的数量。(别名thcount)
PRI :进程的优先级。(参看1.1.4“进程优先级和Nice值”)
NI :Nice值(whether the process tries to be nice by adjusting the priority by the number given; see below for details)
ADDR :进程地址空间(不显示)
SZ :进程所有内存(code+data+stack)总数,单位为KB。
WCHAN :内核功能名称,如果进程正在运行中
RSS :常驻集大小,任务所使用的非交换物理内存(KB)
PSR :当前执行进程的处理器
STIME :开始时间
TTY :终端名称
TIME :进程所用的CPU时间总数(自从启动)
CMD :启动任务的命令行(包括参数)

线程信息

你可以使用ps -L查看线程信息。

例子2-6:使用ps -L查看线程信息