Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

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

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

只能将 core、hwerr 和 signal 事件设为致命。

如果 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 次。如果 count 为 0,则重新启动的尝试会在长时期内继续。缺省情况下,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)