一  命令

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. CI框架 -- 核心文件 之 config.php

    Config:该文件包含CI_Config类,这个类包含启用配置文件来管理的方法 /** * 加载配置文件 * * @param string $file 配置文件名 * @param bool $u ...

  2. C# 指定ip段生成ip地址

    private void button1_Click(object sender, EventArgs e) { string StartIp = ""; string EndIp ...

  3. Java泛型概述

    泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除. 泛型基础 泛型类 我们首先定义 ...

  4. 《C程序猿从校园到职场》带领大家从校园走向职场

    七夕节刚过.就有好消息传来:本人新书<C程序猿从校园到职场>正式出版并在各大电商平台上发售了! 以下.让我们一起来赞赏一下纸质书的"风採"吧. 本书文件夹 第1章 概述 ...

  5. [转]oracle awr报告生成和分析

    转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...

  6. SpringBoot实战(四)之使用JDBC和Spring访问数据库

    这里演示的是h2databse示例,所以简单的介绍普及下h2database相关知识 H2数据库是一个开源的关系型数据库. H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提 ...

  7. Android开发学习笔记-splash画面的显示

    贴代码: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=&qu ...

  8. h5文件(.h5和.hdf5)

    HDF5 (.h5, .hdf5) HDF 是 Hierarchical Data Format(分层数据格式)的缩写 HDF 版本 5不与 HDF 版本 4 及早期版本兼容. HDF5 (.h5, ...

  9. Oracle创建directory

    Oracle创建directory   一般创建directory都是为了用数据泵导入/导出数据用,其实directory还有很多别的用处,本文不做阐述   1.新建directory的语法 CREA ...

  10. DotNetBar如何控制窗体样式

    在C#中使用控件DevComponents.DotNetBar时,如何创建一个漂亮的窗口,并控制窗体样式呢?   1.新建一个DotNetBar窗体             2.使OFFICE窗口风格 ...