CTRUN(1) User Commands CTRUN(1)
NAME
ctrun - execute command in a process contract
SYNOPSIS
/usr/bin/ctrun [
options]
command [
argument]...
DESCRIPTION
The
ctrun utility starts a command in a newly created process
contract.
ctrun holds the contract and can be instructed to output
or respond to events that occur within the contract.
For additional information about process contracts, see
contract(5) and
process(5).
OPTIONS
The following options are supported:
-A fmri aux Sets the process contract creator's
auxiliary field.
-i event,[
event ...]
-f event,[
event ...]
Sets the informative and fatal events,
respectively.
The following are valid
events:
core A member process dumped core.
core events are informative by
default.
empty The last member of the process
contract exited.
exit A member process exited.
fork A process was added to the
process contract.
hwerr A member process encountered a
hardware error.
hwerr events are fatal by
default.
signal A member process received a fatal
signal from a process in a
different process contract.
Only
core,
hwerr, and
signal events can be
made fatal.
More events can be delivered than requested
if
ctrun requires them for its own
purposes. For example,
empty messages are
always requested if a lifetime of
contract is specified. See
-l.
-F fmri Sets the process contract service
FMRI field. To set this field the caller is
required to have the
{PRIV_CONTRACT_IDENTITY} in its effective
set.
-l lifetime The following valid
lifetime values are
supported:
child ctrun exits when the command
exits, regardless of whether
the contract is empty.
contract ctrun exits only when the
contract exits. This is the
default.
none ctrun exits immediately,
orphaning the contract.
-o option,[
option ...]
The following
options are supported:
noorphan Kills all processes in the
contract if the holder (
ctrun)
exits.
This option is invalid when a
lifetime of
none is specified.
pgrponly If a fatal error occurs, kills
at most the process group of
which the errant process is a
member.
regent The contract inherits
inheritable contracts when
abandoned by member processes.
-r count If the contract encounters a fault, this
option attempts to restart the command
count times. If
count is
0, the attempt to
restart continues indefinitely. By default,
ctrun does not attempt to restart the
command.
This option is invalid if a lifetime other
than
contract is specified or if the
pgrponly option is used.
-t If the contract created by
ctrun inherited
subcontracts from its member processes,
attempts to transfer them to the new
contract when restarting.
This option is invalid unless
-r is also
specified.
-v Displays contract events and
ctrun actions
as they occur.
-V Displays verbose contract events, as are
displayed by the
-v option of
ctwatch.
Implies
-v.
OPERANDS
The following operands are supported:
argument One of the strings treated as an argument to
command.
command The command to be passed to
execvp(2). See
exec(2).
EXAMPLES
Example 1: Running a Shell in a New Process Contract
The following example runs a shell in a new process contract:
example% ctrun -l child -o pgrponly ksh
The
-l child option argument is specified so that
ctrun won't wait
until all children of the shell have exited.
-o pgrponly is specified
because an interactive
ksh puts each job in a new process group, and
an error in one job is unlikely to affect the others.
Example 2: Running a Simple Server
The following example runs a simple server:
example%
ctrun -r 0 -t -f hwerr,core,signal server The
-r 0 and
-t options are specified to indicate that if the server
encounters a fatal error,
ctrun should try to restart it. The
-f option makes "
hwerr", "
core", and "
signal" fatal events.
EXIT STATUS
If
command is specified and successfully invoked (see
exec(2)), the
exit status of
ctrun is the exit status of
command. Otherwise,
ctrun exits with one of the following values:
123 The child process exited abnormally.
124 ctrun encountered an internal error.
125 Invalid arguments were provided to
ctrun.
126 command was found but could not be invoked.
127 command could not be found.
FILES
/system/contract/process/*ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | See below. |
+--------------------+-----------------+
Human Readable Output is Uncommitted. Invocation is Committed.
SEE ALSO
ctstat(1),
ctwatch(1),
exec(2),
contract(5),
process(5),
attributes(7) February 25, 2008 CTRUN(1)