Linux终端多用户通信实用命令

 

一  命令

1.1 write

     该命令将当前终端(源)输入的字符拷贝至目标用户的终端,从而发送消息给系统中某个用户。用法如下:

#write <user>

   <msg>

   [Ctrl+D]或[Ctrl+C]

     当执行write命令时,目标用户将得到如下格式的标题:

Message from 源用户名@源主机 on 源字符终端 at 时:分 ...

     随后输入的字符文本将被拷贝至指定用户的终端。目标用户若想回应,也必须执行write命令。

     输入结束后,键入EOF(Ctrl+D)字符或中断(Ctrl+C)指令。目标用户将看到EOF消息,表明本次对话结束。

     当目标用户登录多个终端时,可使用"write <user> <tty>"命令显式地指定目标终端名称。或者,交由write命令自动选择空闲时间最短的那个终端(该终端通常当前在用)。

     注意,与write命令类似的还有talk命令。该命令为一个可视化通信程序,用法更为复杂。

1.2 wall

     该命令发送消息给系统中所有登录用户。用法如下:

# wall <msg> 或

# wall

   <msg>

   [Ctrl+D]

     其中,消息可作为wall命令的参数直接发送,也可写入wall命令的标准输入(此时消息长度限制为22行,且必须以EOF键结束)。

     消息发送完毕时,目标用户将得到如下格式的标题和消息:

Broadcast message from 源用户名 (源字符终端) (星期 月 日 时:分:秒 年):

<空行>

消息内容

     该命令忽略时区变量,即标题中打印的时间基于系统本地时间。

1.3 mesg

     该命令控制其他非root用户对当前终端的写访问权,如是否允许其他用户发来消息。用法如下:

     该命令发送消息给系统中所有登录用户。用法如下:

# mesg [y|n]

     其中,y允许写入当前终端,n则禁止写入。若不指定选项y|n,则mesg命令输出该终端的当前访问状态。

 

二  示例

     上节命令使用示例如下(wall命令未列出其他用户的终端显示):

 1 [wangxiaoyuan_@localhost ~]$ w
 2  11:30:58 up 85 days,  3:45, 20 users,  load average: 0.12, 1.82, 2.77
 3 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
 4 wangxiao pts/1    10.46.44.16      Mon09    0.00s 23.57s  0.00s sshd: wangxiaoyuan_ [priv]
 5 root     pts/12   10.46.51.170     Mon15   19:49m  0.00s  0.00s -bash
 6 litianch pts/15   10.46.44.16      10:42    9:52   0.02s  0.02s -bash
 7 litianch pts/22   10.46.44.29      Fri17   20:39m  0.09s  0.09s -bash
 8 [wangxiaoyuan_@localhost ~]$ write litianchi
 9 write: litianchi is logged in more than once; writing to pts/15
10 hello tianchi, type 'write wangxiaoyuan_' and press ENTER
11 then enter 'welcome!' and press Ctrl+D to send the message to me.
12 //Ctrl+C
13 [litianchi@localhost ~]$ 
14 Message from wangxiaoyuan_@localhost.localdomain on pts/1 at 10:43 ...
15 hello tianchi, type 'write wangxiaoyuan_' and press ENTER
16 then enter 'welcome!' and press Ctrl+D to send the message to me.
17 EOF
18 //Enter
19 [litianchi@localhost ~]$ write wangxiaoyuan_
20 welcome!
21 //Ctrl+D
22 
23 [wangxiaoyuan_@localhost ~]$ 
24 Message from litianchi@localhost.localdomain on pts/15 at 10:44 ...
25 welcome!
26 EOF
27 //Enter
28 [wangxiaoyuan_@localhost ~] wall hello everyone!
29 
30 Broadcast message from wangxiaoyuan_ (pts/21) (Fri Oct 31 16:54:56 2014):
31 
32 hello everyone!
33 
34 [wangxiaoyuan_@localhost ~]$ wall
35 world!
36 //Ctrl+C
37 Broadcast message from wangxiaoyuan_ (pts/1) (Tue Nov 25 11:38:12 2014):
38 
39 world!
40 
41 [wangxiaoyuan_@localhost ~]$ wall "Who's compling, please terminate! Just a test, pls go on..."
42 [wangxiaoyuan_@localhost ~]$ 
43 Broadcast message from wangxiaoyuan_ (pts/21) (Fri Oct 31 17:25:03 2014):
44 
45 Who's compling, please terminate! Just a test, pls go on...
46 
47 [litianchi@localhost ~]$ mesg
48 is y
49 [litianchi@localhost ~]$ mesg n
50 [litianchi@localhost ~]$ mesg  
51 is n
52 [wangxiaoyuan_@localhost ~]$ write litianchi pts/15
53 write: litianchi has messages disabled on pts/15

 

三  总结

     本文所述的write和wall命令可能用于下述情况:

     1) 需要独占编译资源时,可发送消息通知不要再执行编译任务;

     2) 急需编译资源,而其他用户又在编译版本时,可发送消息通知暂停;

     3) 遇到某用户执行死循环占用大量CPU时,可发送消息提醒退出。

     不建议用于Linux系统用户间聊天通信(包括talk命令),毕竟过于原始。

 

 

posted @ 2014-11-25 11:41  clover_toeic  阅读(2567)  评论(0编辑  收藏  举报