使用"进程管理器"来显示在工作站上正在运行的进程, 并执行有关进程的动作。可以作这些而不需要了解 ps(1)、 truss(1)、kill(1)的语法,以及其它基于字符的命令。在相关的地方,列出了就各个"进程管理器"动作相对应的 UNIX 命令。
UNIX 处理系统进程。登录shell、应用程序、编辑运行的会话过程,甚至列出文件的 ls 程序都是在操作系统控制下的进程。
在 UNIX 中,可以执行这些进程的操作。例如,可在任何时候查看正在运行的所有程序,根据选择停止和重新启动程序,并调查研究和调试错误进程。
错误进程是这样一个进程,它所作的工作不是您希望其做的工作。例如,由于错误,进程可能消耗掉大部分的可用资源,或它可能干扰另一进程。使用"进程管理器"以便在出现下列情况时检测出错误进程:
工作站状态或反应看起来已变得缓慢。
程序对用户的输入没有反应。
标准服务(如打印、文件传输或远程登录)没有回应。
当显示所有进程时,"进程管理器"通常显示三十到五十个进程,所以查找错误进程可以使未经训练的人吃惊。下列提示可能有帮助(否则,请与系统管理员联系):
使用"性能表"(请参阅 第 18 章,使用性能表),以查看性能参数,如 CPU 的使用或磁盘的使用,是否特别高。如果是,可以使用 "进程管理器"来识别错误的进程。
使用"进程管理器"来标识:
在不应该使用时,却使用了大部分的可用 CPU 或 RAM 的进程
父进程已经转换成 1 的孤儿进程,即init(但不是这样的进程,如 sched、dtlogin 或 cron,其父进程 ID 应该是 1)
很久以前开始的,并且在应该终止时而未终止的进程
另一用户拥有的正在降低系统性能的大进程
"进程管理器"显示并提供对正在工作站上运行的进程的访问。
列表中的每个进程项目都象下表中解释的那样给出有用的信息:
列标题 | 意义 |
---|---|
ID | 进程 ID |
名称 | 进程名称 |
所有者 | 所有者姓名 |
CPU% | 最近使用的 CPU 时间与同一时期中可用的时间之比,表示为百分数 |
RAM | 该进程当前所占用的 RAM 总量 |
交换 | 虚拟内存中总的大小 |
开始时 | 实际开始时间(或如果不是当前的,则日期) |
父进程 | 父进程 ID,即 PPID |
命令 | 执行的实际 UNIX 命令(切短的) |
可以执行下列动作而不影响选定工作站上的任何进程:
显示所有进程,或只显示含有指定字符串的那些进程
查找含有指定字符串的进程
显示滚动区中按任何列排序的进程
改变采样间隔,复制和保存采样信息
在"进程管理器"窗口的"过滤器"字段中键入过滤器文本。
过滤器文本应该是个字符串,对要显示进程的子集或组的进程项目来说,该字符串是公用的。例如,在图形 17-1中,用户显示与"音频工具"有关的所有进程。
按回车键。
"进程管理器"更新滚动区中的进程,以只包括那些含有与过滤器文本准确匹配的进程项目。
要返回到显示所有的进程,清除"过滤器"字段,并按回车键。
将搜索文本键入"查找"下放式框,或从"查找"下放式列表选择先前使用的搜索文本。
搜索文本应该是个字符串,对要显示所有进程的进程项目来说,该字符串是公用的。
按回车键以在当前光标位置下高亮显示搜索文本的第一次出现。
文本可以位于进程项目的任何字段中。
按回车键以高亮显示下一出现,如此等等。
当找到所需的进程项目时,清除"查找"字段。
当搜索到滚动区的末尾时,搜索并不返回到列表的开头。因此,要确保搜索所有的进程,在"查找"框中键入搜索文本之前,选择列表中的第一 个进程项目。
按缺省值,"进程管理器"按 CPU 使用的降序列出进程项目。可以找到该列,因为 CPU 使用列 (CPU%)上的列标题是凹陷的,而其它列标题 却不是。
要选择用以对进程项目列表进行排序的列,单击相关的列标题或从"查看"菜单选择列名称。
"进程管理器"将进程项目的列表排序,并按新顺序显示它们。每个列的缺省排列顺序说明如下表所示。
表 17-1 进程项目的缺省显示顺序选定的列标题 | 方法 |
---|---|
ID | 进程 ID 以升序的数字排序 |
名称 | 以进程名称的字母排序 |
所有者 | 以所有者姓名的字母排序 |
CPU% | CPU 的使用按降序的数字排序 |
RAM | RAM 的使用按降序的数字排序 |
交换 | 交换空间的使用按降序的数字排序 |
开始时 | 实际开始的时间按年月以降序排序 |
父进程 | 对父进程的进程 ID 按降序的数字排序 |
命令 | 对全路径名按降序的字母排序(字符如 / 有小于字母的排序值) |
(可选)要颠倒这些列的任何一列的排序顺序(例如,要按 升序排序 RAM 使用),单击凹陷的列标题按钮。
列标题区将返回并以颠倒的顺序排序显示。
缺省情况下,"进程管理器"对工作站进行采样,并每 30 秒更新一次显示。
要更改采样间隔,在"采样每个"框中键入秒数(最大 604800,即 14 天)。
按回车键以使新的采样频率生效。
要立即采样,从"采样"菜单选择"现在"。
"进程管理器"进行采样,然后更新显示。
可以在显示中选择和复制一个或多个进程项目,并把文本粘贴到其它应用程序。
也可有将采样数据保存到文件的下列选项:
创建只包含当前采样的新文件
设置每个新采样所附加的记录文件
从"采样"菜单选择"记录文件"。
"进程管理器"显示"记录文件"对话框。
指定新文件的名称和位置,并单击"确定"。
"进程管理器"创建文本文件,并附加每个新采样(用标题信息)到文件。
在终止"进程管理器"应用程序之前,或在从"采样"菜单选择"停止记录"之前,"进程管理器"将继续将采样附加到该文件。
当已标识和选择列表中的进程项目时,可以执行有关进程的下列动作:
发送中止信号以中止进程或调用响应
搜索"地址管理器"中关于所有者的进一步信息
追踪系统调用、显示子进程或运行调试程序
显示其堆栈或祖先
如果不了解执行这些步骤中的任一步骤的意义,请与系统管理员联系。
UNIX 中的 kill 命令能让用户向进程发送信号。信号是发送给进程的信息,以干扰进程并使其作出反应。如果进程被设计成对发送信号类型作出反应,则其将按设计作出反应;否则,其将终止进程。有 42 种信号定义在 signal(5) 手册页中。下表列出了常用的信号编号 / 名称及其意义。
信号编号 | 信号名称 | 意义 |
---|---|---|
1 | HUP | 暂停(常在退出系统前使用) |
2 | INT | 干扰(和终端会话过程中的按 Control+C 相同) |
9 | "中止" |
中止(终止而不清除) 只有进程的所有者或超级用户(根)发出的命令才起作用 进程无法响应该信号;它必须终止 |
15 | TERM |
中止(在清除后完美地终止) 只有进程的所有者或超级用户(根)发出的命令才起作用 |
"中止"菜单项目使您能发送 kill(9)信号而迅速地 中止进程。"信号"菜单项目提供您对于通过kill(1) 命令所发送的信号的更多控制。例如,可以发送 INT信号或 HUP 信号,等等。
只应向进程发送那些了解其意义的信号。例如,如果选择登录shell,并发送 kill 信号,将立即退出系统。关于进程和作业控制的进一步信息,请与系统管理员联系,或参阅下列说明:
在"进程管理器"滚动区中选择进程项目。
从"进程"菜单选择"中止"。
要有许可权,"进程管理器"可中止进程(及其子进程);否则将显示出错。有时要终止进程要花几秒种。如果在下次"进程管理器"更新其显示时进程不出现,则可以说那个进程已经中止。
等同的 UNIX 命令是:
kill -9 PID ,其中 PID 是选定进程的进程 ID。
通过重新定义下面文件中所标的 'Kill' 动作,可以重新定义"中止"菜单项所执行的命令:
/usr/dt/appconfig/types/C/sdtprocess.dt
在"进程管理器"滚动区中选择进程项目。
从"进程"菜单选择"信号"。
"进程管理器"显示请求您指定信号的对话框。至少提供在 signal(5) 手册页中定义的 42 个信号中的一个。
键入相关的信号编号或名称,并单击"确定"。
"进程管理器"发出信号命令,并关闭 对话框。未发出成功信息。中止进程通常中止其子进程。
等同的 UNIX 命令是:kill -signum_name PID
其中 -signum_name 是信号编号或名称,而 PID 是选定进程的进程 ID。
在"进程管理器"滚动区中选择进程项目。
从"进程"菜单选择"寻找所有者"。
"进程管理器"打开"地址管理器",并请求其为选定进程的系统用户姓名搜索"系统卡片"。关于"地址管理器"的进一步细节,请参阅第 16 章,使用地址管理器。
等同的 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 工作区"来调查研究错误进程。"进程"菜单上的"调试"项目对于选定的进程调用您喜欢的调试程序。
使用您喜欢的调试程序调试进程。
等同的 UNIX 命令是:
workshop -d command
其中 workshop 是调试程序的名称,command 是将进程 ID 传送给调试程序所需要的命令。