要查询所有消息并等待一个主机上用户的应答,并根据句柄来显示它们,请输入以下命令:
要应答由“实用程序”或“Shell 脚本”发送的“消息”,或“重新显示与给定句柄关联的消息”,请输入以下命令:
write -hHandle, { ok | cancel | query } [ -n Host ]
要有选择地在另一个主机或特别的设备上给用户发送消息,请输入以下命令:
write [ -r ] { [ -n Host ] User | User@Host } [ Line ]
write 命令使消息 能够在系统上实时发送。它提供与另一个登录用户类似交谈一样的通信。每个用户交替地从其它工作站发送或接收简短消息。通过在一个文件中输入完整的消息然后将该文件作为输入重定向 到 write 命令就能发送长消息。
对另一个用户(由 User 参数指定),要接收消息,用户必须登录并消息许可权没有被拒绝。当一条消息被发往一个未登录的用户时, 会显示消息用户未登录。如果消息发送给一个用户,该用户 通过将 mesg 命令设置为 no 而具有 拒绝的消息许可权, 则显示消息 write:许可权拒绝。
当发出 write 命令时, 它会立即发送以下消息,同时带有消息收件人或目标的声音提醒(ASCII BEL 字符):
消息 来自于 SenderID 在 SenderHostname 上(ttynn) [日期] ...
随着连接成功,write 命令发送 两个 ASCII BEL 字符到两个工作站。蜂鸣声提醒发送方消息可以开始而且它提醒接收用户有消息进入。
当按下一次 Enter 键时发送一行。从发送方到接收方的通信链路保持打开并且发送会继续直到 Ctrl-D 按键顺序结束发送链路。然后将一个正文结束符(<EOT>)发送到目标工作站并终止 write 命令。
接收用户或目标用户能够通过向 始发用户发送 write 命令进行响应。这打开了一条从接收方返回发送方的通信线路, 使得消息响应能够返回。对于此类型的交换,下面的约定很有用:当第一次写给其它用户时, 在发送任何文本之前 等待响应。用诸如 o(over)的信号结束消息以提醒其它人应答。当对话完成 时使用 oo(结束并离开)。
如果在一行的开始有字符 !(感 叹号),write 命令调用 shell 将行的剩余部分作为命令来执行。
当将一条消息写到一位登录到多于一个 工作站或多重使用多于一个进程的用户时,write 命令使用 在 /etc/utmp 文件中找到的第一个登录实例 作为消息交付点(通常是登录或控制台 shell),并且提示以下消息:
UserID 已在多于一个位置登录。 您已连接到“工作站”。 其它位置是: 工作站
当接收到这条消息时, 如果想把消息发送到 一个不同于初始登录位置的位置, 可以通过指定位置(例如,tty00) 的 Line 来在不同位置联系目标用户。
允许写给其它用户的许可权由各用户 用 mesg 命令授权或拒绝。一些命令在运行时拒绝消息许可权以阻止 对其输出的干扰。具有 root 用户权限 的用户能写给任何工作站而不考虑工作站的消息许可权。
可以用 write 命令 同在其它主机上的用户对话。可以通过 使用 -nHostName 标志或 User@Host 参数标识在远程主机上的用户。为了写给 远程主机上的用户,writesrv 守护进程必须 同时运行在当前主机和远程主机上。
qdaemon 守护进程也用 write 命令来将消息发送到在其它主机上的用户并等待应答。仅有三种有效应答:
ok | 原始写操作以 0 状态退出。 |
cancel | 原始写操作以 1 状态退出。 |
query | 显示与给定句柄相关联的消息。 |
User | 指定接收消息文本人的用户标识。 |
User@Host | 指定接收消息文本人的用户标识和远程主机。 |
Line | 联系在另一个位置(例如,tty00)的目标用户。 |
注:
- 为了使任何标志都有效,writesrv 守护进程必须运行在目标主机上。如果不是正在用 -n 标志或 @Host,而是在用 -h、-q 或 -r, 那么 writesrv 守护进程必须运行在当前主机上。
- 如果机器上没有安装 TCP/IP,但是 设置了 HostName,那么为了使用 write 命令和 -h、-q 或 -r 标志同本地用户对话, 必须把当前主机名附加到 /etc/hosts 文件中 loopback 项的末尾。原始项应该是:
127.0.0.1 loopback LocalHostName新项应该是:
127.0.0.1 loopback LocalHostName HostName
这个命令返回以下出口值:
0 | 成功完成。 |
>0 | 目标用户没有登录或拒绝许可权。 |
write june
按 Enter 键并输入,
I need to see you! Meet me in the computer room at 12:30.
然后按 Ctrl-D 按键顺序以终止 write 命令 方式。
如果您的用户标识 是 karen 并且您正在使用工作站 tty3,june 的工作站显示:
消息 来自于 karen 在 trek tty3 8 月 17 11:55:24 ... I need to see you! Meet me in the computer room at 12:30. <EOT>
write june
按 Enter 键并输入,
Meet me in the computer room at 12:30. o
此命令启动对话。下一行开始的 o 表示 消息结束。它告诉 June 您正在等待响应。如果希望继续, 不要按 Ctrl-D。
现在 June 通过输入以下内容进行应答:
write karen
按 Enter 键并输入,
I'm running tests at 12:30. Can we meet at 3? o
您可能回应:
OK--the computer room at 3. oo
oo 指结束并离开,告诉 June 您没有什么其它要说的了。如果 June 也是以 oo 结束, 那么你们都按 Ctrl-D 来 结束对话。
write june < message.text
它将 message.text 文件的内容写到 june 的工作站。
write -n console
按 Enter 键并输入,
The printer in building 998 has jammed. Please send help.
然后按 Ctrl-D 按键顺序。
这将消息写给登录到工作站 /dev/console 的人。
write -n partya spuds
按 Enter 键并输入,
Your new tape has just arrived, come see me to pick it up. Thanks!
然后按 Ctrl-D 按键顺序。
或者
write spuds@partya
按 Enter 键并输入,
Your new tape has just arrived, come see me to pick it up. Thanks!
然后按 Ctrl-D 按键顺序。
消息 来自 mary 在 trek 上(tty10) 8 月 17 10:03:34 ... 使用 “write -h 6398492,reply” 来 应答 请在 rmt0 中插入 5 号 磁带。 <EOT>
要肯定地答复,请输入:
write -h 6398492,ok
然后按 Ctrl-D 按键顺序。
要否定地答复,请输入:
write -h 6398492,cancel
然后按 Ctrl-D 按键顺序。
使 用 -h 标志时, 没有必要提供主机名或用户标识。该信息通过句柄跟踪。
/etc/hosts | 包含 TCP/IP 主机信息。 |
/etc/utmp | 包含用于 who、write 和 login 命令 的用户和记帐信息。 |
mesg 命令、wall 命令、who 命令、writesrv 命令。
《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『shell 概述』。