一 命令
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命令),毕竟过于原始。