使用“进程管理器”来显示正在工作站上运行的进程,并对进程执行操作。要做到这一点,并不需要了解 ps(1)、 truss(1)、 kill(1) 以及其它基于字符的命令的语法。 在相关的地方,给出了与各个“进程管理器”操作等效的 UNIX 命令。
UNIX 通过进程工作。登录 shell、应用程序、所运行的编辑会话,甚至列出您的文件的 ls 程序,都是受操作环境控制的进程。
在 UNIX 中,可以对这些进程执行操作。例如,可在任何时候查看正在运行的所有程序,根据选择停止和重新启动程序,以及考察和调试错误的进程。
错误进程是这样一个进程,即它所做的工作不是您希望其做的工作。例如,由于错误,进程可能消耗掉大部分的可用资源,或者它可能干扰另一进程。使用“进程管理器”可以在遇到下列情况时检测出错误进程:
工作站性能或反应似乎已经降低或变得缓慢。
程序对用户的输入没有反应。
标准服务(如打印、文件传输或远程登录)没有回应。
当显示所有进程时,“进程管理器”通常显示三十到五十个进程,所以查找错误进程对未经训练的人来说是很不容易的事。下列提示可能会有帮助(否则,请与系统管理员联系):
使用“性能监视器”以查看性能参数(如 CPU 的使用率或软盘的使用率)是否特别高。如果是,可以使用“进程管理器”来标识错误的进程。
使用“进程管理器”来标识:
不应该使用却使用了大部分的可用 CPU 或 RAM 的进程
父进程已经转换成 1 的孤立进程,即 init(但不是以下进程,如 sched 、dtlogin 或其父进程 ID 应该是 1 的 cron)
很久以前启动的,并且在应该终止时未终止的进程
另一用户拥有的降低了系统性能的大进程
“进程管理器”显示并提供对正在工作站上运行的进程的访问。
列表中的每个进程项都像下表中解释的那样给出有用的信息:
列标题 | 含义 |
---|---|
ID | 进程 ID |
名称 | 进程名 |
属主 | 属主名 |
CPU% | 最近使用的 CPU 时间与同一时期中的可用时间之比,以百分数表示 |
RAM | 该进程当前所占用的 RAM 容量 |
交换 | 虚拟内存中的总容量 |
启动于 | 实际启动时间(如果不是当前时间,则为日期) |
父进程 | 父进程的进程 ID,即 “PPID” |
命令 | 执行的实际 UNIX 命令(已截断) |
可以执行下列操作而不影响选定工作站上的任何进程:
显示所有进程,或只显示包含指定字符串的那些进程
查找包含指定字符串的进程
在滚动窗格中显示按任何列排序的进程
更改采样间隔,并且复制和保存采样信息
在“进程管理器”窗口的“过滤器”字段中键入过滤器文本。
过滤器文本应该是个字符串,对要显示的进程子集或进程组的进程项来说,该字符串是通用的。例如,在图形 19–1中,用户显示与“音频工具”有关的所有进程。
按回车键。
“进程管理器”更新滚动窗格中的进程,以便只包括那些含有与过滤器文本准确匹配的进程项。
要恢复显示所有的进程,请清除“过滤器”字段,并按回车键。
将查找文本键入“查找”下拉式框,或从“查找”下拉式列表中选择先前使用的查找文本。
查找文本应该是个字符串,对要显示的所有进程的进程项来说,该字符串是通用的。
按回车键以在当前光标位置下突出显示查找文本的第一个匹配项。
文本可以位于进程项中的任何字段中。
按回车键以突出显示下一个匹配项,并如此继续下去。
当找到所需的进程项时,清除“查找”字段。
当到达滚动窗格的末尾时,查找并不返回到列表的顶部。因此,要确保查找所有的进程,在“查找”框中键入查找文本之前,首先选择列表中的第一个进程项。
默认情况下,“进程管理器”按 CPU 使用的降序列出进程项。因为 CPU 使用列 (CPU%) 上方的列标题是凹陷的,而其它列标题却不是,所以可以知道这一点。
要选择用以对进程项列表进行排序的列,请单击相关的列标题或者从“查看”菜单中选择列名称。
“进程管理器”将进程项的列表排序,并按照新顺序显示它们。 每个列的缺省排列顺序在下表中指明。
表 19–1 进程项的缺省显示顺序选定的列标题 | 方法 |
---|---|
ID | 按 进程 ID 的数字升序进行排序 |
名称 | 按进程名的字母顺序排序 |
属主 | 按属主名的字母顺序排序 |
CPU% | 按 CPU 使用的数字降序进行排序 |
RAM | 按 RAM 使用的数字降序进行排序 |
交换 | 按交换空间使用的数字降序进行排序 |
启动时间 | 按实际启动时间的降序进行排序 |
父进程 | 按父进程的进程 ID 号的数字降序进行排序 |
命令 | 按全路径名的字母数字降序进行排序(/ 之类的字符的排序值低于字母) |
(可选)要颠倒任何一列的排序顺序(例如,要按 RAM 使用的升序进行排列),请单击凹陷的列标题按钮。
列标题区将变为黑色,并且以相反的顺序对显示进行排序。
默认情况下,“进程管理器”对工作站进行抽样,并且每隔 30 秒更新一次显示。
要更改抽样间隔,请在“抽样间隔”框中键入秒数(最大值为 604800,即 14 天)。
按回车键以使新的抽样频率生效。
要立即抽样,请从“抽样”菜单中选择“现在”。
“进程管理器”进行抽样,然后更新显示。
可以在显示中选择和复制一个或多个进程项,并将文本粘贴到其它应用程序中。
还有下列选项可用于将样例数据保存到文件:
创建只包含当前样例的新文件
设置每个新样例所附加到的日志文件
从“抽样”菜单中选择“日志文件”。
“进程管理器”显示“日志文件”对话框。
指定新文件的名称和位置,并单击“确定”。
“进程管理器”创建文本文件,并将每个新样例附加(通过标题信息)到文件中。
在终止“进程管理器”应用程序之前,或在从“抽样”菜单中选择“停止记录”之前,“进程管理器”会继续将样例附加到该文件。
在已经标识和选择列表中的进程项后,可以对进程执行下列操作:
发送中止信号以终止进程或调用响应
查找有关“地址管理器”中属主的更多信息
跟踪系统调用、显示子进程或运行调试程序
显示其堆栈或祖先
如果不了解执行这些步骤中的任一步骤的意义,请向系统管理员咨询。
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)。
在“进程管理器”滚动窗格中选择一个进程项。
从“进程”菜单中选择“杀死”。
如果您有相应的权限,“进程管理器”将中止该进程(及其子进程);否则将显示错误。有时终止进程要花几秒种。如果某个进程在“进程管理器”下次更新其显示时未列出,则您可以断定该进程已经中止。
等效的 UNIX 命令是:
kill -9 PID 此处, PID 是选定进程的进程 ID。
通过重新定义下列文件中标有“Kill”的操作,可以重新定义“杀死”菜单项所执行的命令:
/usr/dt/appconfig/types/C/sdtprocess.dt
在“进程管理器”滚动窗格中选择一个进程项。
从“进程”菜单中选择“信号”。
“进程管理器”显示一个对话框,请求您指定信号。您必须至少提供在 信号 (5)手册页中定义的 42 个信号中的一个信号。
键入相关的信号编号或名称,并单击“确定”。
“进程管理器”发出信号命令,并关闭对话框。不发出任何成功信息。中止进程时通常会中止其子进程。
等效的 UNIX 命令是: kill -signum_name PID
其中 -signum_name 是信号编号或名称,而 PID 是选定进程的进程 ID。
在“进程管理器”滚动窗格中选择一个进程项。
从“进程”菜单中选择“寻找属主”。
“进程管理器”打开“地址管理器”,并请求其在“系统卡”中查找选定进程的系统用户名称。有关“地址管理器”的详细信息,请参见第 18 章,使用地址管理器。
等效的 UNIX 命令是:
/usr/proc/bin/ptree PID
其中 PID 是选定进程的进程 ID。
当 UNIX 进程初始化一个或多个从属进程时,我们把这些进程称为子进程或孩子。子进程和父进程具有相同的用户 ID。
在“进程管理器”滚动窗格中选择一个进程项。
从“进程”菜单中选择“跟踪子进程”。
“进程管理器”为选定的进程显示所有新的子进程(以及这些子进程的子进程,如此循环下去)的创建记录。
使用在 Intro(2) 手册页中描述的错误代码名称来报告错误返回。
等效的 UNIX 命令是:
truss -fa -texec,fork -s¦CLD,ALRM -p PID
其中 PID 是选定进程的进程 ID。
进程在执行期间,调用 UNIX 内核或者执行系统调用。您可能希望跟踪这些系统调用,以查看其对其它进程的影响。
在“进程管理器”滚动窗格中选择一个进程项。
从“进程”菜单中选择“跟踪系统调用”。
“进程管理器”显示一个对话框,请求输入可选参数。
单击“确定”。
跟踪输出的每一行都通过其参数和返回值来报告错误、信号名称或系统调用名称。有关进一步的信息,请参见 truss(1) 手册页。
等效的 UNIX 命令是:
truss -p PID
其中 PID 是选定进程的进程 ID。
等效的 UNIX 命令是:
/usr/proc/bin/pstack PID
其中 PID 是选定进程的进程 ID。
应用程序开发者和系统管理员有时使用调试应用程序,如“Sun Workshop”来考察错误进程。“进程”菜单上的“调试”项针对选定的进程调用您首选的调试程序。
使用您首选的调试程序调试进程。
等效的 UNIX 命令是:
workshop -d command
其中 workshop 是调试程序的名称,command 是将进程 ID 传递给调试程序所需要的命令。