Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

ctrun(1)

名称

ctrun - 在进程合同中执行命令

用法概要

/usr/bin/ctrun [options] command [ argument]...

描述

ctrun 实用程序在新创建的进程合同中启动命令。ctrun 保留合同,且可以指示为输出或响应在合同中发生的事件。

有关进程合同的更多信息,请参见 contract(5)process(5)

选项

支持以下选项:

–A aux

设置进程合同创建者的辅助字段。

–i event,[event ...]
–f event,[event ...]

分别设置信息性事件和致命事件。

以下是有效的 event

core

成员进程转储核心。

缺省情况下,core 事件为信息性事件。

empty

进程合同中的最后一个成员已退出。

exit

成员进程已退出。

fork

向进程合同添加了一个进程。

hwerr

成员进程遇到硬件错误。

缺省情况下,hwerr 事件是致命事件。

signal

成员进程从其他进程合同的进程中收到致命信号。

只能将 corehwerrsignal 事件设为致命。

如果 ctrun 因自身目的需要更多事件,则可以提供比要求更多的事件。例如,如果指定了 contract 的生命周期,则可以始终请求 empty 消息。请参见 –l

–F fmri

设置进程合同服务 FMRI 字段。要设置此字段,调用者需要在其有效集中包含 {PRIV_CONTRACT_IDENTITY}

–l lifetime

支持以下有效 lifetime 值:

child

如果命令退出,则 ctrun 也退出,不管合同是否为空。

contract

仅当合同退出时,ctrun 才会退出。这是缺省值。

none

ctrun 立即退出,孤立合同。

–o option,[option ...]

支持以下 option

noorphan

如果占位符 (ctrun) 退出,则中止合同中的所有进程。

仅当指定了 none 的生命周期时,此选项才有效。

pgrponly

如果发生致命错误,则最多可中止拥有错误进程成员的进程组。

regent

如果成员进程放弃合同,则合同会继承可继承的合同。

–r count

如果合同遇到错误,则该选项会尝试重新启动命令 count 次。如果 count0,则重新启动的尝试会在长时期内继续。缺省情况下,ctrun 不会尝试重新启动命令。

如果指定了除 contract 之外的生命周期,或者使用了 pgrponly 选项,则该选项无效。

–t

如果 ctrun 创建的合同从其成员进程处继承了子合同,则会在重新启动时尝试将它们传输到新合同。

除非同时指定了 –r,否则此选项无效。

–v

在发生时显示合同事件和 ctrun 操作。

–V

显示 ctwatch–v 选项所显示的详细合同事件。表示 –v

操作数

支持下列操作数:

argument

当作 command 的参数的字符串之一。

command

命令将传递到 execvp(2)。请参见 exec(2)

示例

示例 1 在新进程合同中运行 Shell

以下是在新进程合同中运行 shell 的示例:


example% ctrun -l child -o pgrponly ksh

指定 –l child 选项参数,以使 ctrun 不用等到 shell 的所有子项退出。指定了 –o pgrponly,因为交互式 ksh 会将每个作业置于新进程组,且一个作业的错误不太可能影响到其他作业。

示例 2 运行简单服务器

以下是运行简单服务器的示例:

example% ctrun -r 0 -t -f hwerr,core,signal server

指定 –r 0–t 选项来表示服务器是否遇到致命错误,ctrun 是否应该尝试重新启动服务器。–f 选项可生成 "hwerr"、"core" 和 "signal" 致命事件。

退出状态

如果指定并成功调用了 command(请参见 exec(2)),则 ctrun 的退出状态是 command 的退出状态。否则,ctrun 退出时返回下列值之一:

123

子进程异常退出。

124

ctrun 遇到内部错误。

125

ctrun 提供了无效参数。

126

找到了 command,但无法调用。

127

找不到 command

文件

/system/contract/process/*

属性

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

属性类型
属性值
可用性
system/core-os
接口稳定性
请参见下文。

用户可读的输出是 Uncommitted(未确定)。调用为 Committed(已确定)。

另请参见

ctstat(1)ctwatch(1)exec(2)contract(5)process(5)attributes(7)