Solaris 公用桌面环境:用户指南

第 19 章 使用进程管理器

使用“进程管理器”来显示正在工作站上运行的进程,并对进程执行操作。要做到这一点,并不需要了解 ps(1) truss(1) kill(1) 以及其它基于字符的命令的语法。 在相关的地方,给出了与各个“进程管理器”操作等效的 UNIX 命令。

关于进程

UNIX 通过进程工作。登录 shell、应用程序、所运行的编辑会话,甚至列出您的文件的 ls 程序,都是受操作环境控制的进程。

在 UNIX 中,可以对这些进程执行操作。例如,可在任何时候查看正在运行的所有程序,根据选择停止和重新启动程序,以及考察和调试错误的进程。

查找错误进程的提示

错误进程是这样一个进程,即它所做的工作不是您希望其做的工作。例如,由于错误,进程可能消耗掉大部分的可用资源,或者它可能干扰另一进程。使用“进程管理器”可以在遇到下列情况时检测出错误进程:

当显示所有进程时,“进程管理器”通常显示三十到五十个进程,所以查找错误进程对未经训练的人来说是很不容易的事。下列提示可能会有帮助(否则,请与系统管理员联系):

采样、显示和保存进程信息

“进程管理器”显示并提供对正在工作站上运行的进程的访问。

图形 19–1 进程管理器显示包含字符串“audio”的进程项。

Graphic

列表中的每个进程项都像下表中解释的那样给出有用的信息:

 列标题 含义
 ID 进程 ID
 名称  进程名
 属主 属主名
 CPU% 最近使用的 CPU 时间与同一时期中的可用时间之比,以百分数表示
 RAM  该进程当前所占用的 RAM 容量
 交换 虚拟内存中的总容量
 启动于 实际启动时间(如果不是当前时间,则为日期)
 父进程 父进程的进程 ID,即 “PPID”
 命令 执行的实际 UNIX 命令(已截断)

可以执行下列操作而不影响选定工作站上的任何进程:

打开进程管理器

    单击“前面板”上“工具”子面板上的“查找进程”控件。

    显示“进程管理器”主窗口。它立即对工作站进行采样,并显示所有当前进程的采样。

显示进程的子集

  1. 在“进程管理器”窗口的“过滤器”字段中键入过滤器文本。

    过滤器文本应该是个字符串,对要显示的进程子集或进程组的进程项来说,该字符串是通用的。例如,在图形 19–1中,用户显示与“音频工具”有关的所有进程。

  2. 按回车键。

    “进程管理器”更新滚动窗格中的进程,以便只包括那些含有与过滤器文本准确匹配的进程项。

  3. 要恢复显示所有的进程,请清除“过滤器”字段,并按回车键。

查找进程

  1. 将查找文本键入“查找”下拉式框,或从“查找”下拉式列表中选择先前使用的查找文本。

    查找文本应该是个字符串,对要显示的所有进程的进程项来说,该字符串是通用的。

  2. 按回车键以在当前光标位置下突出显示查找文本的第一个匹配项。

    文本可以位于进程项中的任何字段中。

  3. 按回车键以突出显示下一个匹配项,并如此继续下去。

  4. 当找到所需的进程项时,清除“查找”字段。


    注意:

    当到达滚动窗格的末尾时,查找并不返回到列表的顶部。因此,要确保查找所有的进程,在“查找”框中键入查找文本之前,首先选择列表中的第一个进程项。


更改显示的排序顺序

默认情况下,“进程管理器”按 CPU 使用的降序列出进程项。因为 CPU 使用列 (CPU%) 上方的列标题是凹陷的,而其它列标题却不是,所以可以知道这一点。

  1. 要选择用以对进程项列表进行排序的列,请单击相关的列标题或者从“查看”菜单中选择列名称。

    “进程管理器”将进程项的列表排序,并按照新顺序显示它们。 每个列的缺省排列顺序在下表中指明。

    表 19–1 进程项的缺省显示顺序
     选定的列标题 方法
     ID  按 进程 ID 的数字升序进行排序
     名称  按进程名的字母顺序排序
     属主 按属主名的字母顺序排序
     CPU% 按 CPU 使用的数字降序进行排序
     RAM 按 RAM 使用的数字降序进行排序
     交换  按交换空间使用的数字降序进行排序
     启动时间 按实际启动时间的降序进行排序
     父进程 按父进程的进程 ID 号的数字降序进行排序
     命令 按全路径名的字母数字降序进行排序(/ 之类的字符的排序值低于字母)

  2. (可选)要颠倒任何一列的排序顺序(例如,要按 RAM 使用的序进行排列),请单击凹陷的列标题按钮。

    列标题区将变为黑色,并且以相反的顺序对显示进行排序。

    Graphic

更改抽样间隔

默认情况下,“进程管理器”对工作站进行抽样,并且每隔 30 秒更新一次显示。

    要禁用/启用连续采样模式,请从“抽样”菜单中选择“停止/启动”。

    如果启动连续抽样模式,则将在“采样”菜单上看到“停止”菜单项;否则,菜单项将为“启动”。

    要更改抽样间隔,请在“抽样间隔”框中键入秒数(最大值为 604800,即 14 天)。

    按回车键以使新的抽样频率生效。

    要立即抽样,请从“抽样”菜单中选择“现在”。

    “进程管理器”进行抽样,然后更新显示。

复制和保存

可以在显示中选择和复制一个或多个进程项,并将文本粘贴到其它应用程序中。

还有下列选项可用于将样例数据保存到文件:

创建包含当前样例的文件

  1. 从“抽样”菜单中选择“另存为”。

    “进程管理器”显示“另存为” 对话框。

  2. 指定新文件的名称和位置,并单击“确定”。

    “进程管理器”创建包含当前显示中的进程项的文本文件。

设置日志文件

  1. 从“抽样”菜单中选择“日志文件”。

    “进程管理器”显示“日志文件”对话框。

  2. 指定新文件的名称和位置,并单击“确定”。

    “进程管理器”创建文本文件,并将每个新样例附加(通过标题信息)到文件中。


    小心:小心:

    在终止“进程管理器”应用程序之前,或在从“抽样”菜单中选择“停止记录”之前,“进程管理器”会继续将样例附加到该文件。


对选定进程执行操作

在已经标识和选择列表中的进程项后,可以对进程执行下列操作:


小心:小心:

如果不了解执行这些步骤中的任一步骤的意义,请向系统管理员咨询。


向进程发送 Kill 信号

UNIX 中的 Kill 命令使用户能够向进程发送信号。信号是发送给进程以中断进程并使其作出反应的信息。如果进程被设计为对发送给它的该类型信号作出反应,则它将作出反应;否则,该进程将终止。 下表列出了一些常用的信号编号/名称及其含义。

 信号编号 信号名称 含义
 1  HUP 挂起(经常在退出系统前使用)
 2  INT 中断(与在终端会话中按 Control+C 相同)
 9  KILL

杀死(终止而不清除) 

只有进程属主或超级用户 (root) 发出该命令时才起作用 

程序无法响应该信号; 它必须终止 

 15  TERM

Kill(在清除后正常终止)  

只有进程属主或超级用户 (root) 发出该命令时才起作用 

“杀死”菜单项使您能够向进程发送一个“Kill” (9) 信号,从而迅速地中止该进程。“信号”菜单项使您能够对通过 kill(1) 命令发送的信号进行更多的控制。例如,可以发送 INT 信号或 HUP 信号,等等。


小心:小心:

只应在了解向进程发送信号的意义时,才能这样做。例如,如果选择登录 Shell,并发送 kill 信号,则将立即退出系统。有关进程和作业控制的更多信息,请与系统管理员联系,或者参见 Solaris 高级用户指南 (Sun Microsystems)。


中止进程(快速中止)

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“杀死”。

    如果您有相应的权限,“进程管理器”将中止该进程(及其子进程);否则将显示错误。有时终止进程要花几秒种。如果某个进程在“进程管理器”下次更新其显示时未列出,则您可以断定该进程已经中止。


    提示:

    等效的 UNIX 命令是:

    kill -9 PID 此处, PID 是选定进程的进程 ID。

    通过重新定义下列文件中标有“Kill”的操作,可以重新定义“杀死”菜单项所执行的命令:

    /usr/dt/appconfig/types/C/sdtprocess.dt


向进程发送信号

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“信号”。

    “进程管理器”显示一个对话框,请求您指定信号。您必须至少提供在 信号 (5)手册页中定义的 42 个信号中的一个信号。

  3. 键入相关的信号编号或名称,并单击“确定”。

    “进程管理器”发出信号命令,并关闭对话框。不发出任何成功信息。中止进程时通常会中止其子进程。


提示:

等效的 UNIX 命令是: kill -signum_name PID

其中 -signum_name 是信号编号或名称,而 PID 是选定进程的进程 ID。


寻找进程的属主

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“寻找属主”。

    “进程管理器”打开“地址管理器”,并请求其在“系统卡”中查找选定进程的系统用户名称。有关“地址管理器”的详细信息,请参见第 18 章,使用地址管理器

显示进程的祖先

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“显示祖先”。

    “进程管理器”显示一个包含指定进程的进程树的窗口。从其各自父进程处缩进各个子进程。

    Graphic

提示:

等效的 UNIX 命令是:

/usr/proc/bin/ptree PID

其中 PID 是选定进程的进程 ID。


跟踪子进程

当 UNIX 进程初始化一个或多个从属进程时,我们把这些进程称为子进程或孩子。子进程和父进程具有相同的用户 ID。

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“跟踪子进程”。

    “进程管理器”为选定的进程显示所有新的子进程(以及这些子进程的子进程,如此循环下去)的创建记录。

    使用在 Intro(2) 手册页中描述的错误代码名称来报告错误返回。


    提示:

    等效的 UNIX 命令是:

    truss -fa -texec,fork -s¦CLD,ALRM -p PID

    其中 PID 是选定进程的进程 ID。


跟踪系统调用

进程在执行期间,调用 UNIX 内核或者执行系统调用。您可能希望跟踪这些系统调用,以查看其对其它进程的影响。

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“跟踪系统调用”。

    “进程管理器”显示一个对话框,请求输入可选参数。

  3. 单击“确定”。

    跟踪输出的每一行都通过其参数和返回值来报告错误、信号名称或系统调用名称。有关进一步的信息,请参见 truss(1) 手册页。


提示:

等效的 UNIX 命令是:

truss -p PID

其中 PID 是选定进程的进程 ID。


显示进程的栈

  1. 在“进程管理器”滚动窗格中选择一个进程项。

  2. 从“进程”菜单中选择“显示栈”。

    “进程管理器”为选定的进程显示一个包含十六进制数和符号式栈跟踪的窗口。


提示:

等效的 UNIX 命令是:

/usr/proc/bin/pstack PID

其中 PID 是选定进程的进程 ID。


调试进程

应用程序开发者和系统管理员有时使用调试应用程序,如“Sun Workshop”来考察错误进程。“进程”菜单上的“调试”项针对选定的进程调用您首选的调试程序。

    使用您首选的调试程序调试进程。


提示:

等效的 UNIX 命令是:

workshop -d command

其中 workshop 是调试程序的名称,command 是将进程 ID 传递给调试程序所需要的命令。