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

     

     

  • 相关阅读:
    临时表学习
    再读《黄金时代》
    shell脚本获取给定年月前一月份及后一月份
    MEMORY_TARGET not supported on this system
    2013年的总结
    windows live writer试试
    入园第一篇
    工作中经常用到的几个字符串和数组操作方法
    小程序获取用户信息失败
    前端性能优化方法概括
  • 原文地址:https://www.cnblogs.com/clover-toeic/p/4120596.html
Copyright © 2020-2023  润新知