ctrun - 在进程合同中执行命令
/usr/bin/ctrun [options] command [ argument]...
ctrun 实用程序在新创建的进程合同中启动命令。ctrun 保留合同,且可以指示为输出或响应在合同中发生的事件。
有关进程合同的更多信息,请参见 contract(5) 和 process(5)。
支持以下选项:
设置进程合同创建者的辅助字段。
分别设置信息性事件和致命事件。
以下是有效的 event:
成员进程转储核心。
缺省情况下,core 事件为信息性事件。
进程合同中的最后一个成员已退出。
成员进程已退出。
向进程合同添加了一个进程。
成员进程遇到硬件错误。
缺省情况下,hwerr 事件是致命事件。
成员进程从其他进程合同的进程中收到致命信号。
只能将 core、hwerr 和 signal 事件设为致命。
如果 ctrun 因自身目的需要更多事件,则可以提供比要求更多的事件。例如,如果指定了 contract 的生命周期,则可以始终请求 empty 消息。请参见 –l。
设置进程合同服务 FMRI 字段。要设置此字段,调用者需要在其有效集中包含 {PRIV_CONTRACT_IDENTITY}。
支持以下有效 lifetime 值:
如果命令退出,则 ctrun 也退出,不管合同是否为空。
仅当合同退出时,ctrun 才会退出。这是缺省值。
ctrun 立即退出,孤立合同。
支持以下 option:
如果占位符 (ctrun) 退出,则中止合同中的所有进程。
仅当指定了 none 的生命周期时,此选项才有效。
如果发生致命错误,则最多可中止拥有错误进程成员的进程组。
如果成员进程放弃合同,则合同会继承可继承的合同。
如果合同遇到错误,则该选项会尝试重新启动命令 count 次。如果 count 为 0,则重新启动的尝试会在长时期内继续。缺省情况下,ctrun 不会尝试重新启动命令。
如果指定了除 contract 之外的生命周期,或者使用了 pgrponly 选项,则该选项无效。
如果 ctrun 创建的合同从其成员进程处继承了子合同,则会在重新启动时尝试将它们传输到新合同。
除非同时指定了 –r,否则此选项无效。
在发生时显示合同事件和 ctrun 操作。
显示 ctwatch 的 –v 选项所显示的详细合同事件。表示 –v。
支持下列操作数:
当作 command 的参数的字符串之一。
命令将传递到 execvp(2)。请参见 exec(2)。
以下是在新进程合同中运行 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 退出时返回下列值之一:
子进程异常退出。
ctrun 遇到内部错误。
为 ctrun 提供了无效参数。
找到了 command,但无法调用。
找不到 command。
有关下列属性的说明,请参见 attributes(7):
|
用户可读的输出是 Uncommitted(未确定)。调用为 Committed(已确定)。
ctstat(1)、ctwatch(1)、exec(2)、contract(5)、process(5)、attributes(7)