Oracle® Solaris Cluster 参考手册

退出打印视图

更新时间: 2014 年 7 月,E51743-01
 
 

pmfadm (1M)

名称

pmfadm - 进程监视器工具管理

用法概要

/usr/cluster/bin/pmfadm -c nametag [-a action] [[-e ENV_VAR=
     env.var…] | -E] [-n retries] [-t period] [-C level#] 
     command [args-to-command…]
/usr/cluster/bin/pmfadm -k nametag [-w timeout] [signal]
/usr/cluster/bin/pmfadm -L [-h host]
/usr/cluster/bin/pmfadm -l nametag [-h host]
/usr/cluster/bin/pmfadm -m nametag [-n retries] [-t period]
/usr/cluster/bin/pmfadm -q nametag [-h host]
/usr/cluster/bin/pmfadm -s nametag [-w timeout] [signal]

描述

pmfadm 实用程序为进程监视器设备提供了管理命令行界面。

进程监视器工具可以监视进程及其后代进程,并在它们无法保持活动状态时重新启动它们。可以指定允许的故障总数,并将其限制在特定的时间段。在指定时间段内达到最大故障数目之后,会在控制台记录一条消息,并不再重新启动进程。

如果已指定 action 程序,则在达到允许的故障数目时会调用该程序。如果 action 程序以非零状态退出,将会从进程监视器设备中删除进程 nametag。否则,将使用传递到 pmfadm 中的原始参数重新启动该进程。

在进程监视器控制下启动的进程 以启动请求的用户的有效用户 ID (euid) 和有效组 ID (egid) 运行。只有原始用户或 root 用户可以处理与这些进程关联的 nametag。但是,任何调用方(本地或远程)都能使用状态信息。

初始启动的进程产生的所有进程及其后续产生的进程都会受到监视。仅当最后一个进程或子进程退出时,进程监视器才会尝试重新启动该进程。

选项

支持以下选项:

–a action

当进程无法保持活动状态时要调用的操作程序。该程序必须在 –a 选项的单个参数中指定,但可以是用引号括起的包含多个组件的字符串。在任一情况下,均按照所指定的那样执行字符串,并有两个附加参数:发生的事件(当前仅包括 failed)以及与该进程关联的 nametag。在执行命令之前,会重新实例化当前目录和 PATH 环境变量。不会保留(也不应假定保留)任何其他环境变量。

如果操作程序以状态 0 退出,则使用指定给 pmfadm 的原始参数再次启动进程。任何其他退出状态都会导致该 nametag 不再存在于进程监视器范围内。

如果不指定 –a 选项,其结果等同于指定始终以非零状态退出的操作脚本。

–C level#

当启动进程时,可监视该进程及其子进程的最高级别 level#(含该级别)。 level# 的值必须为大于或等于零的整数。原始进程在级别 0 执行,它的子进程在级别 1 执行,而这些子进程的子进程在级别 2 执行,依此类推。任何新派生操作都会产生新的子进程级别。

该选项可对监视哪些进程提供更多的控制。它对于监视派生新进程的服务器非常有用。

如果不指定该选项,将监视所有子进程,并且直到原始进程及其所有子进程停止后,才会重新启动原始进程。

如果服务器派生新的进程以处理客户端请求,则可能只需要监视该服务器。如果服务器停止,即使某些客户端进程仍在运行,也需要重新启动该服务器。适当的监视级别为 –C 0

如果父进程在派生子进程之后退出,则将需要监视该子进程。用于监视子进程的级别为 –C 1。当两个进程都停止时,将重新启动服务器。

–c nametag

启动进程,并以 nametag 作为标识符。跟随命令行标志的所有参数作为相关进程执行。在执行命令之前,进程监视器设备会重新实例化当前目录和 PATH 环境变量。不会保留(也不应假定保留)任何其他环境变量。

如果 nametag 已存在,则 pmfadm 将以退出状态 1 退出,不会产生其他影响。

命令行参数中不支持 I/O 重定向。如果有必要进行此操作,则应创建执行该重定向的脚本,并将其作为 pmfadm 执行的命令使用。

–E

将整个 pmfadm 环境传递到新的进程。默认不使用该选项,在这种情况下,会传递 rpc.pmfd 环境与 pmfadm 环境的路径。

–e–E 选项互斥,即,不能在同一命令中使用这两个选项。

–e ENV_VAR= env.value

传递到新进程的执行环境中的 ENV_VAR= env.value 格式的环境变量。该选项可以重复,因此可以传递多个环境变量。默认不使用该选项,在这种情况下,会传递 rpc.pmfd 环境与 pmfadm 环境的路径。

–h host

要连接的主机的名称。默认值为 localhost

–k nametag

将指定的信号发送到与 nametag 关联的进程,其中包括与操作程序(如果其当前正在运行)关联的任何进程。如果未指定任何信号,则将发送默认信号 SIGKILL。如果进程及其后代进程退出,并仍有重试次数,则进程监视器将重新启动该进程。指定的信号是由 kill 命令所识别的同一组名称。

–L

返回发出该命令的用户所具有的所有运行标记的列表,如果用户为 root 用户,将显示在服务器上运行的所有标记。

–l nametag

输出有关 nametag 的状态信息。该命令的输出主要用于诊断,并且并非一成不变。

–m nametag

修改 nametag 的重试次数或观察重试的时间段。更改这些参数之后,将会清除早期失败的历史记录。

–n retries

在指定的时间段内允许的重试次数。该字段的默认值为 0,表示进程退出之后将不再重新启动。允许的最大值为 100。值 -1 表示重试次数不受限制。

–q nametag

指示 nametag 是否已注册并在进程监视器下运行。如果是,则返回 0,否则,返回 1。其他返回值表示出现错误。

–s nametag

停止重新启动与 nametag 关联的命令。如果指定信号,则将其发送到所有进程,其中包括操作脚本及其进程(如果它们当前正在执行)。如果未指定信号,则不进行发送。停止监视进程并不意味着这些进程不再存在。在这些进程及其所有后代进程退出之前,它们仍保持运行。指定的信号是由 kill 命令所识别的同一组名称。

–t period

计算故障的分钟数。该标志的默认值为 -1,它表示不限定。如果指定该参数,则不会将指定时段之外发生的进程故障计算在内。

–w timeout

当与 –s nametag–k nametag 标志结合使用时,等待指定的秒数直到与 nametag 关联的进程退出。如果超时到期,则 pmfadm 以退出状态 2 退出。该标志的默认值为 0,表示命令立即返回,不等待任何进程退出。

如果给定值 -1pmfadm 将无限等待,直至与该标志关联的进程退出。pmfadm 进程不会释放它所使用的 RPC 服务器线程,直至达到 RPC 超时期限。因此,应避免不必要地将 –w timeout 值设置为 -1。

示例

示例 1 启动将不会重新启动的睡眠进程

以下示例将启动名为 sleep.once 的睡眠进程,该进程退出之后将不会再重新启动:

example% pmfadm –c sleep.once /bin/sleep 5
示例 2 启动睡眠进程并重新启动它

以下示例启动睡眠进程并重新启动它,最多重新启动一次:

example% pmfadm –c sleep.twice –n 1 /bin/sleep 5
示例 3 启动睡眠进程并重新启动它

以下示例启动睡眠进程并重新启动它,最多每分钟重新启动两次。当超过可接受的故障次数而无法继续运行时,它将调用 /bin/true

example% pmfadm –c sleep.forever –n 2 –t 1 –a /bin/true /bin/sleep 60
示例 4 列出 sleep.forever Nametag 的当前状态

以下命令可列出 sleep.forever nametag 的当前状态:

example% pmfadm –l sleep.forever
示例 5 SIGHUP 发送到所有进程

以下命令将 SIGHUP 发送到所有与 sleep.forever 关联的进程,最多等待 5 秒直到所有进程退出。

example% pmfadm –w 5 –k sleep.forever HUP
示例 6 停止监视进程并发送 SIGHUP

以下命令停止监视(重新启动)与 sleep.forever 关联的进程,并将 SIGHUP 发送到与其相关的任何进程。在提供信号之后,该命令会立即返回,但可能在所有进程退出之前。

example% pmfadm –s sleep.forever HUP
示例 7 列出用户所具有的所有运行的标记

如果用户发出以下命令:

example% pmfadm –c sleep.once /bin/sleep 30
example% pmfadm –c sleep.twice /bin/sleep 60
example% pmfadm –c sleep.forever /bin/sleep 90

以下命令:

example% pmfadm –L

的输出为

sleep.once sleep.twice sleep.forever

退出状态

返回以下退出值:

0

成功完成。

1

nametag 不存在,或者尝试创建已存在的 nametag。

2

命令超时。

其他非零值

发生错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
ha-cluster/system/core
接口稳定性
Evolving(发展中)

另请参见

kill(1), rpc.pmfd(1M), attributes(5)