一  命令

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命令未列出其他用户的终端显示):

 [wangxiaoyuan_@localhost ~]$ w
11:30:58 up 85 days, 3:45, 20 users, load average: 0.12, 1.82, 2.77
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
wangxiao pts/1 10.46.44.16 Mon09 0.00s 23.57s 0.00s sshd: wangxiaoyuan_ [priv]
root pts/12 10.46.51.170 Mon15 19:49m 0.00s 0.00s -bash
litianch pts/15 10.46.44.16 10:42 9:52 0.02s 0.02s -bash
litianch pts/22 10.46.44.29 Fri17 20:39m 0.09s 0.09s -bash
[wangxiaoyuan_@localhost ~]$ write litianchi
write: litianchi is logged in more than once; writing to pts/15
hello tianchi, type 'write wangxiaoyuan_' and press ENTER
then enter 'welcome!' and press Ctrl+D to send the message to me.
//Ctrl+C
[litianchi@localhost ~]$
Message from wangxiaoyuan_@localhost.localdomain on pts/1 at 10:43 ...
hello tianchi, type 'write wangxiaoyuan_' and press ENTER
then enter 'welcome!' and press Ctrl+D to send the message to me.
EOF
//Enter
[litianchi@localhost ~]$ write wangxiaoyuan_
welcome!
//Ctrl+D [wangxiaoyuan_@localhost ~]$
Message from litianchi@localhost.localdomain on pts/15 at 10:44 ...
welcome!
EOF
//Enter
[wangxiaoyuan_@localhost ~] wall hello everyone!

Broadcast message from wangxiaoyuan_ (pts/21) (Fri Oct 31 16:54:56 2014): hello everyone! [wangxiaoyuan_@localhost ~]$ wall
world!
//Ctrl+C
Broadcast message from wangxiaoyuan_ (pts/1) (Tue Nov 25 11:38:12 2014): world! [wangxiaoyuan_@localhost ~]$ wall "Who's compling, please terminate! Just a test, pls go on..."
[wangxiaoyuan_@localhost ~]$
Broadcast message from wangxiaoyuan_ (pts/21) (Fri Oct 31 17:25:03 2014): Who's compling, please terminate! Just a test, pls go on... [litianchi@localhost ~]$ mesg
is y
[litianchi@localhost ~]$ mesg n
[litianchi@localhost ~]$ mesg
is n
[wangxiaoyuan_@localhost ~]$ write litianchi pts/15
write: litianchi has messages disabled on pts/15

三  总结

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

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

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

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

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

Linux终端多用户通信实用命令的更多相关文章

  1. 像Linux终端一样使用windows命令行【cmder】

    像Linux终端一样使用windows命令行[cmder] 下载cmder 我下载的是full版,下载之后是个压缩包,解压之后点击cmder.exe即可运行. 需要解决的几个问题 默认的是λ,当然还是 ...

  2. Linux Tomcat日志查看实用命令

    实用命令: 查看tomcat运行日志 tail -f catalina.out 通过关键字搜索查看日志 cat jeewx-2015-09-20.log | grep 验证码 查看固定时间日志 cat ...

  3. Linux终端(terminal)清屏命令

    windows CMD终端的清屏命令是cls Linux终端中的清屏命令有 1) clear 2) reset

  4. Linux终端的一些快捷键命令

    一.初识linux的终端种类:本地.远程 查看本终端命令: #tty 命令,看到当前所处的终端 #(w)who 命令,看到系统中所有登录的用户 其中,tty 终端为表示在本地命令行模式下打开的终端:p ...

  5. linux终端下为什么用命令打开软件后,要关闭软件才能继续下一条命令?

    用终端打开chromium浏览器(命令:chromium-browser)的时候发现打开浏览器之后无法继续在终端输入命令,只能关闭浏览器或者在终端按下Ctrl+c,此时系统将退出浏览器并可以继续在终端 ...

  6. Linux重器之 Vim 实用命令

    Vim 常用的命令 光标定位; hjkl  上下左右移动 0 $ 跳到行首或行尾 gg   shift+G 跳到整个文件的开头行或者结尾行 1G ,2G,3G........NG ,跳到第1.2.3 ...

  7. Linux中的vim实用命令 -- (转)

    VI 有2个模式.我自己定义的   1. 命令模式,一开始进去的模式.一些指定的键盘输入会产生不同的效果 2. 输入模式,在命令模式下输入冒号(:) 就可以进入输入模式.按Esc键即可退出命令模式. ...

  8. 「LINUX资料」简单实用命令less和vi(三)

  9. Linux终端 Tab 补全命令

    1. vi编辑器打开 /etc/bash.bashrc文件 vi /etc/bash.bashrc 2.找到文件中的下列代码 3.将注释符号#去掉,即改成 4.最后 source一下 /etc/bas ...

随机推荐

  1. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  2. Git -- 从远程库克隆

    上次我们讲了先有本地库,后有远程库的时候,如何关联远程库. 现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆GitHub,创建一个新的仓库,名字叫gitskill ...

  3. Build opencv libraries for android arm, x86 ubuntu

    废话不多说. 准备工作: 1. 下载源代码: http://opencv.org/ 编译平台:ubuntu14.04 opencv 2.4.6.1 本人用这样的办法编译了opecv 2.4.9 的没有 ...

  4. PyQt的signal 和 solit的补充

    from PyQt5.QtWidgets import (QWidget , QVBoxLayout , QHBoxLayout, QLineEdit, QPushButton) from PyQt5 ...

  5. c# 连接mysql配置config,不用装net connector

    <system.data> <DbProviderFactories> <remove invariant="MySql.Data.MySqlClient&qu ...

  6. Python中print格式化输出

    截取字符串输出,下面例子将只输出字符串的前3个字母 >>> str="abcdefg" >>> print "%.3s" % ...

  7. 关于WSDL文件

    endpoint Name是在Service节点中指定的. 而非是binding.binding节点只是绑定soapaction.

  8. MyEclipse远程调试Tomcat

    程序就是这么一个神奇的东西,有时你的一个项目,在本机上运行得还是好好的,可当你把这货放到了服务器上,同样的条件就是结果不一样.于是就灰常想看一下程序在远程运行时候的状态,希望让程序在远程运行,还可以在 ...

  9. window.frames[]在Firefox下无法兼容的解决方式

    html代码段: <iframe id="fr" src="ProjectTree.aspx?IsFree=true&f=yes&IsCheckPr ...

  10. js粘贴事件paste简单解析及遇到的坑

    在用户执行粘贴操作的时候,js能够获得剪切板的内容,本文讨论一下这个问题. 目前只有Chrome支持获取剪切板中的图片数据.还好需要这个功能的产品目前只支持Chrome和Safari,一些Chrome ...