write コマンド
目的
通信回線をオープンして、リアルタイムで、 システム上の他のユーザーにメッセージを送信します。
構文
ホスト上でユーザーからの応答を待っているすべてのメッセージを照会し、そのメッセージにハンドルを付けて表示するには、次のようにタイプします。
ユーティリティーまたはシェル・スクリプトによって送信されたメッセージに応答したり、指定したハンドルに関連したメッセージを再表示するには、次のようにタイプします。
write -hハンドル、 { ok | cancel | query } [ -n ホスト ]
ユーザー (オプションで他のホスト上) または特定のデバイスにメッセージを送信するには、次のようにタイプします。
説明
write コマンドを使用すると、リアルタイムでメッセージをシステム上で送信できます。 このコマンドによって、もう一方のログイン・ユーザーと会話式に通信することができます。 各ユーザーは、他のワークステーションから短いメッセージを交互に送受信します。 長いメッセージの場合は、まずメッセージ全体をファイルに入れてから、そのファイルを write コマンドの入力データとしてリダイレクトすると送信できます。
メッセージを受信する側のユーザー (User パラメーターで指定) は、ログイン済みで、メッセージ許可を拒否している状態であってはなりません。 ログインしていないユーザーにメッセージが送信されると、メッセージは以下のようになります。user not logged inが表示されます。 メスグ コマンドを no に設定してメッセージ許可を拒否したユーザーにメッセージが送信された場合、メッセージは以下のようになります。write: permission deniedが表示されます。
write コマンドを発行すると、下記のメッセージが、ビープ音 (ASCII BEL 文字) とともにメッセージ受信者またはターゲットに即座に送信されます。
Message from SenderID on SenderHostname (ttynn) [Date] ... 正常に接続すると、write コマンドは 2 つの ASCII BEL 文字を両方のワークステーションに送信します。 ビープ音によって、送信側ユーザーにはメッセージが開始できたことを、受信側ユーザーにはメッセージを送信中であることを警告します。
Enter キーを押すごとに 1 行送信されます。 送信側から受信側への通信リンクがオープン状態のままであれば、Ctrl-D キー・シーケンスで送信リンクを終了するまで送信は継続します。 その後、テキスト終了文字 (< EOT>) がターゲット・ワークステーションに送信され、 書き込み コマンド・モードが終了します。
受信側ユーザーまたはターゲット・ユーザーは、write コマンドを送り返すことで、送信元ユーザーに応答することができます。 これによって、受信側から送信側へ戻す通信回線がオープンされ、返事としてのメッセージ応答が可能になります。 このタイプのメッセージのやり取りでは、 以下のような規則が役に立ちます。すなわち、最初に送信先ユーザーに書き出す際、テキストを送信する前に応答を待ちます。 次のようなシグナルでメッセージを終了します。o(終了) 他のユーザーに返信を通知します。 使用oo会話が終了すると、(何度も) 終了します。
次の文字が!(感嘆符) が付いている場合には、write コマンドはシェルを呼び出して残りの行をコマンドとして実行します。
複数のワークステーションまたは複数のプロセスを使用してログインしているユーザーに書き込むと、 write コマンドは /etc/utmp ファイルにある最初のログイン・インスタンスをメッセージ・デリバリー・ポイント (通常はログインまたはコンソール・シェル) として使用し、次のメッセージを受け取ります。
UserID is logged on more than one place.
You are connected to "Workstation".
Other locations are:
Workstationこのメッセージを受け取ったら、最初のログインのロケーション以外の場所にメッセージを送信したい場合は、そのロケーションの Line (例えば、tty00) を指定して、別のロケーションで送信側ユーザーに接触することができます。
別のユーザーへの書き込み権限は、 メスグ コマンドを使用して個々のユーザーによって付与または拒否されます。 一部のコマンドは、出力による干渉を防止するために、実行中はメッセージ許可を拒否します。 root ユーザー権限を持つユーザーは、ワークステーションのメッセージ許可に関係なく、どのワークステーションにも書き込みができます。
write コマンドを使用すると、他のホストのユーザーと会話できます。 -n'ホスト名フラグや'ユーザー'@'ホストパラメータを使用することで、リモートホスト上のユーザーを識別することができる。 リモート・ホスト上のユーザーに書き込むには、writesrv デーモンを、現行ホスト上とリモート・ホスト上の両方で実行中でなければなりません。
write コマンドは、qdaemon デーモンで使用して他のホストのユーザーにメッセージを送信し、応答を待つこともできます。 有効な応答は下記の 3 つのみです。
| 項目 | 説明 |
|---|---|
| ok | 元の書き込みは状況 0 で終了します。 |
| cancel | 元の書き込みは状況 1 で終了します。 |
| query | 所定のハンドルに対応するメッセージが表示されます。 |
パラメーター
| 項目 | 説明 |
|---|---|
| User | メッセージ・テキストを受信するユーザーのユーザー ID を指定します。 |
| ユーザー@ホスト | メッセージ・テキストを受信するユーザーのユーザー ID およびリモート・ホストを指定します。 |
| 行 | 別の場所のターゲット・ユーザーに連絡します (tty00(例)。 |
フラグ
| 項目 | 説明 |
|---|---|
| -h ハンドル,返信 | 応答オプションのある write を使用して、ユーティリティーまたはシェル・スクリプトによって送信されたメッセージに応答します。 Handle 変数に使用する値は、内部で生成され、元のメッセージのテキスト内のユーザーに与えられます。 応答は以下のようになります。ok,cancel、またはquery. |
| Nホスト | リモート・ホストを指定します。 Host 変数にはニックネームまたは IP アドレスを指定できます。 |
| -q | ホスト上でユーザーからの応答を待っているすべてのメッセージを照会し、そのメッセージにハンドルを付けて表示します。 |
| -r | メッセージ・ハンドルを生成してメッセージのヘッダーに入れ、そのメッセージを送信して応答を待ちます。 このフラグは、オペレーター・メッセージ用に qdaemon デーモンで使用され、シェル・スクリプトに入れることもできます。 対話型会話には使用されません。 終了状況が 0 の場合は、応答が以下のようになっていたことを示します。ok状況が 1 の場合は、応答が以下のようになっていることを示します。cancel終了状況 2 は、ユーザーに連絡できなかったことを示します。 |
- すべてのフラグを機能させるためには、ターゲット・ホスト上で writesrv デーモンが実行中でなければなりません。 N フラグまたは @ホストのいずれも使用していないが、 -h、 -Q (Q)、または -を使用している場合は、 書き込み (writesrv) デーモンがホスト上で実行されている必要があります。
- TCP/IP がマシンにインストールされていないが、 HostName が設定されている場合、 -h、 -q、または -r フラグを指定した write コマンドを使用してローカル・ホスト上のユーザーと会話するには、ホスト名を loopback/etc/hosts ファイル内のエントリー。 元のエントリーには下記のように記述されています。
新しいエントリーには下記のように記述します。127.0.0.1 loopback LocalHostName127.0.0.1 loopback LocalHostName HostName
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 正常終了。 |
| >0 | 指定されたユーザーはログインしていないか、許可を拒否しました。 |
例
- ログインしているユーザーにメッセージを書き込むには、次のように入力します。
Enter キーを押し、下記のように入力します。write june
次に、Ctrl-D キー・シーケンスを押して write コマンド・モードを終了します。I need to see you! Meet me in the computer room at 12:30.ユーザー ID が以下の場合:karenワークステーションを使用している場合tty3,juneのワークステーションは、以下を表示します。
Message from karen on trek tty3 Aug 17 11:55:24 ... I need to see you! Meet me in the computer room at 12:30. <EOT> - 会話を保留するには、次のように入力します。
Enter キーを押し、下記のように入力します。write june
これによって会話が開始します。 このo次の行の先頭にあるものは、メッセージが終わったことを意味します。 これは、June に応答を待っていることを知らせます。 継続したい場合は、Ctrl-D を押さないでください。Meet me in the computer room at 12:30. oJune は以下のように入力して応答します。
Enter キーを押し、下記のように入力します。write karen
ここで下記のように応答できます。I'm running tests at 12:30. Can we meet at 3? o
このooオーバー・アウトを意味します。6 月には、これ以上何も言うことはありません。 6 月も終了した場合oo次に、Ctrl-D を押して会話を終了します。OK--the computer room at 3. oo - 準備済みメッセージを作成するには、次のように入力します。
これにより、 message.text ファイルの内容が以下のように書き込まれます。juneのワークステーション。write june < message.text - 特定のワークステーションを使用しているユーザーに書き込むには、次のように入力します。
Enter キーを押し、下記のように入力します。write -n console
次に、Ctrl-D キー・シーケンスを押します。The printer in building 998 has jammed. Please send help.これにより、ワークステーションにログインしているユーザーにメッセージが書き込まれます。/dev/console.
- メッセージをユーザーに送信するにはspudsホストpartya次のように入力します。
Enter キーを押し、下記のように入力します。write -n partya spuds
次に、Ctrl-D キー・シーケンスを押します。Your new tape has just arrived, come see me to pick it up. Thanks!または
Enter キーを押し、下記のように入力します。write spuds@partya
次に、Ctrl-D キー・シーケンスを押します。Your new tape has just arrived, come see me to pick it up. Thanks! - 以下に、 qdaemon デーモンによって送信されるメッセージの例を示します。
肯定的に応答するには、下記のように入力します。Message from mary on trek (tty10) Aug 17 10:03:34 ... Use "write -h 6398492,reply" to reply Please insert tape number 5 into rmt0. <EOT>
次に、Ctrl-D キー・シーケンスを押します。write -h 6398492,ok否定的に応答するには、下記のように入力します。
次に、Ctrl-D キー・シーケンスを押します。write -h 6398492,cancel-h フラグを使用すると、ホスト名やユーザー ID を指定する必要がありません。 この情報はハンドルにより追跡されます。
ファイル
| 項目 | 説明 |
|---|---|
| /etc/hosts | TCP/IP ホスト情報が入っています。 |
| /etc/utmp | 対象者、 書き込み、および ログイン コマンドのユーザーおよびアカウンティング情報が入っています。 |