rtstop

RTシステムを停止する

Author: Geoffrey Biggs and contributors
Date: 2010-10-24
Copyright: EPL-1.0
Version: 3.0
Manual section:1
Manual group:User commands

書式

rtstop [options] [RTSProfile file]

概要

すべてのコンポーネントを deactivate すること似よってRTSProfileに保存され たRTシステムを停止します。コンポーネントはRTSProfileが指定された順番に deactivate されます。RTSProfileに「必要」と 指定されておらず実行中ではないコンポーネントは無視します。

ファイル名を指定しない場合、RTSProfileをstdinから読みます。

オプション

--dry-run 実行する内容を表示する(実際には停止は行われない)
-x, --xml XMLフォーマットを使う
-y, --yaml YAMLフォーマットを使う
--version プログラムのバージョン番号を表示して終了する
-h, --help ヘルプを表示して終了する
-v, --verbose 冗長な情報を出力する [デフォルト: False]

ステート変更のプラン

RTSProfileには、RTシステムのコンポーネントの開始/停止の指示も指定できる ことが定義されています。コンポーネントを開始/停止の順番を指示するこが可 能です。コンポーネント間で依存関係がある場合(例えば、あるコンポーネント の開始後に、もう一方のコンポーネントを開始する必要がある場合)に、その順 番を指定することが可能です。

rtstart(1)rtstop(1) はこの情報を利用します。 rtstartActivation ブロックに含まれていた情報を利用して、 rtstopDeactivation ブロックに含まれていた情報を利用します。実行された時、そ れらは全システムの状態の変更のために計画を構築し実行します。エラーが出る か計画が完成まで止まりません。

--dry-run というオプションを追加すると計画は表示されますが実行はしません。 計画の出力は以下のようです:

{1} Activate /localhost/ConfigSample0.rtc in execution context 0 (Required)
{2} [Order 1] Activate /localhost/Motor0.rtc in execution context 0 (Required)
{4} [Order 3/Wait 5000ms] Activate /localhost/Controller0.rtc in execution context 0 (Required)
{3} [Order 2/Sync to Motor0, Order 5/Sync to Controller0] Activate /localhost/Sensor0.rtc in execution context 0 (Required)
{5} [Order 4/After ConfigSample0's action] Activate /localhost/ConsoleIn0.rtc in execution context 0 (Required)

各ラインの初めの括弧の中の数は*アクションID*です。これらは実行の時にも表 示され、アクションの簡単な識別は可能です。

続いて、角括弧中の値が出る可能性はあります。これは、実行されているアク ションに関するどんな*前条件*を示します:

Order
順番を管理します。RTSProfile の condition の rts:sequence 値で設定可 能です。他の前条件がない場合、アクションはこの順番によって実行します。
Wait
指定された時間が経過した後にアクションが実行されます。
Sync
指定されたコンポーネントが目的状態に達するまで、アクションを実行しません。
After
Sync と似てます。違いは、指定されたアクションが別のコンポーネント 上で最初に行なわれるのを待つということです。言いかえれば、そのアクシ ョンは、コンポーネントが目標状態に達する前でも、別のコンポーネントの アクションが行われれば実行されます。

ラインの残りはアクションの説明です。

パス

rtshellパス でRTCツリーのオブジェクトを示します。パスは オブジェクトのアドレスです。ネームサーバとネームコンテクストは ダイレクトリで、マネージャとRTコンポーネントはファイルです。POSIXの cat 等のコマンドと同じように、コマンドに渡したパスはrtshellの ワーキングディレクトリに追加されます。rtshellの現在のワーキングディレクトリは RTCSH_CWD という環境変数に保存されて、 rtcwd というコマンドで 変更することができます。

利用できるパスはコマンド実行時のネームサーバによって変わります。 RTCSH_NAMESERVERS という環境変数の値に記録されたネームサーバとパスに 指定された ネームサーバを組み合わせて提供します。

例えば、 /localhost/comp0.rtclocalhost にあるネームサーバに登録 された comp0.rtc というRTコンポーネントを示します。 /localhost/manager/comp0.rtclocalhost にあるネームサーバの下の manager というディレクトリに登録された comp0.rtc というRT コンポーネントを示します。 ./comp0.rtc は現在のワーキングディレクトリ の中にある comp0.rtc というRTコンポーネントを示します。

RTコンポーネントのポートを示す場合、パスの後にコロン(「:」)で区切って 示します。例えば、 /localhost/comp0.rtc:datacomp0.rtc というRTコンポーネントの data というポートを示します。

新しいポートを作るコマンドもあります。この場合、オプションをパスに追加 することができます。使えるオプションは作られるポートの名前とフォーマッタ です。指定方法は以下の通りです:

path:port.name#formatter

例:

/localhost/blurg.host_cxt/comp0.rtc:input.stuff#a_printer

作られるポートの名前は stuff で、データは a_printer という関数で ターミナルに表示するように指定してます。( a_printer の関数はPythonが利 用可能な場所に存在する必要があります。普通はユーザがモジュールで提供します。) 作られたポートは comp0.rtcinput というポートに接続します。

「name」という部分は必須ではありません。書いていない場合は「.」文字も 書かないでください。例:

/localhost/blurg.host_cxt/comp0.rtc:input#a_printer

「formatter」という部分は必須ではありません。書いていない場合は「.」文字も 書かないでください。例:

/localhost/blurg.host_cxt/comp0.rtc:input.stuff

環境変数

RTCTREE_ORB_ARGS
ORBを作る時に渡す変数です。セミコロンで区切ります。必須ではありません。
RTCTREE_NAMESERVERS
RTCツリーを作る時に参照するネームサーバのアドレスです。アドレスをセミ コロンで区切ります。リストされたアドレスはすべてRTCツリーに追加して rtshellで見ることができるようになります。必須ではありません。
RTSH_CWD
rtshellの現在のワーキングディレクトリ。rtshellが自動的に設定します。 設定しないでください。

普通、ユーザが設定する変数は RTCTREE_NAMESERVERS のみです。よく使うネ ームサーバを設定しておくと便利です。例えば、Bashシェルの場合、以下のコマンド は localhost192.168.0.1:65346 および example.com にあるネーム サーバをいつもrtshellで利用できるようにします。

$ export RTCTREE_NAMESERVERS=localhost;192.168.0.1:65346;example.com

返り値

成功の場合はゼロを返します。失敗の場合はゼロではない値を返します。

デバグ情報とエラーは stderr に出します。

$ rtstop sys.rtsys

sys.rtsys というファイルに保存されたRTシステムを停止します。

$ rtstop sys.rtsys --dry-run

sys.rtsys というファイルに保存されたRTシステムを停止するために何を するかを表示します。(実際には、停止は行われません。)

参照

rtcheck (1), rtresurrect (1), rtstart (1)