Linux给当前终端发消息,linux下 write/wall 给其它用户/终端 发送即时文本消息

[liuqiang@localhost bin]$ w

21:34:34 up 2 days,  5:00,  4 users,  load average: 185.57, 213.49, 230.35

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

zyz      pts/0    202.117.10.246   09:33    1:36m  3:09m  0.00s sshd: zyz [priv]

root     pts/1    202.117.10.9     19:35    0.00s 21.16s  0.04s w

root     pts/2    202.117.10.9     19:58    2:14   0.21s  0.07s -bash

root     pts/3    202.117.10.9     21:32    2:08   0.02s  0.02s -bash

比如给在线的某人发消息:

write zyz pts/0

Hello ,  ZHangxiaopang~  Have A GoodD^H Night!

Ctrl C结束

from:http://verycto.blog.51cto.com/904981/394337

from:http://blog.donews.com/vanfan/archive/2011/12/20/1579866.aspx

一直以来,都是在我的debian机子上架一个自己写的ajax聊天工具,

方便大家传送一下比较即时的消息比如好看的文章网址等,如果是文件,

就直接拖到我的samba共享里,因为我们几个机子都是Linux,

今天试了一下Linux终端里自带的聊天命令:write 和 wall 。

who 查看一下哪些人登录:

heylin   tty7         2010-05-03 20:17 (:0)

heylin   pts/2        2010-05-03 20:24 (t.xiaoji.com)

heylin   pts/4        2010-05-03 22:28 (:0.0)

heylin   pts/5        2010-05-03 22:08 (debian-2.local)

pts/2是我登录的,pts/5是某人的。pts/4是他登录的 tty7是gnome的

命令格式:write heylin /dev/pts/4  回车

输入消息:hello, msg from xiaoji

不过不支持中文。write执行后,可以接受别人的消息,也可以继续发消息,但如果一开始是别人先发送给你,你就必须再打开一个终端才能发消息。

wall ,wall(write all)命令是广播,所有的人都可以收到。

wall [message]?NO,这个命令已经过时了,新的格式是:

echo "hello,This is a message" | wall

或者

hadoop@clone1:~/download/hadoop-0.20.203.0/conf 04:46:27$

wall <<

Broadcast Message from hadoop@clone1

(/dev/pts/2) at 4:46 ...

11111111111

hadoop@clone1:~/download/hadoop-0.20.203.0/conf 04:46:37$

Linux的聊天蛮有意思的,不过,如果你正在终端编辑一个文件,那就惨了,因为消息会直接插入到你的编辑文件中!慎用~

-----------------------------------------------------------------------------------------------------------------

从一个虚拟终端向另一个虚拟终端发消息,假设都是用root帐号登录的.

[root@localhost ~]#w                     # 目前都有哪几个终端连接

root pts/1 Feb 17 16:58 (123.118.16.**)

root pts/2 Feb 17 19:53 (123.112.44.**)

root pts/3 Feb 17 20:01 (123.112.44.**)

[root@localhost ~]#who am i             #看下自己是哪个终端

root pts/3 Feb 17 20:01 (123.112.44.**)

[root@localhost ~]#write root pts/2     #root是登陆的帐户 pts/2 是终端号 这样就可向别一个终端发消息了 用CTRL+C 来结束!!!!

1,查看当前所有登录用户所使用的终端

finger

w

2,查看自己所使用的终端

tty

3,给某个终端的用户发送信息

write root /dev/pts/4

hello,you are donkey

然后回车,再按ctrl+c即可

4,发公告信息给所有终端用户

wall this system  will halt after 5 minutes        #新版的 wall 不能直接这么用了,需要用 管道 或者 文件 或者 here string/here document

// wall 就是write all

5,禁止别人把信息显示在我的终端

mesg n

允许别人把信息显示在我的终端

mesg y

设置登录提示 /etc/motd文件的用途 /etc/motd?即message?of?today(布告栏信息),每次用户登录时,/etc/motd文件的内容会显示在用户的终端。系统管理员可以在文件中编辑系统活动消息,例如:管理员通知用户系统何时进行软件或硬件的升级、何时进行系统维护等。如果shell支持中文,还可以使用中文,这样看起来更易于了解。/etc/motd?缺点是,现在许多用户登录系统时选择自动进入图形界面,所以这些信息往往看不到。 /etc/issue文件的用途 /etc/issue文件的使用方法与/etc/motd文件相差不大,它们的主要区别在于:当一个网络用户或通过串口登录系统上时,/etc/issue的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。 使用write命令 用户可以使用write命令给其他在线用户发送消息。格式: #write username [tty] 在Shell提示符号输入write,username指接受发送信息的用户名。如果一个用户多次登录到系统, tty参数指定要发送的终端。使用write发送信息的前提条件是该用户已经登录到系统。否则会出现以下提示: #write cjh write:cjh is not logged in 可以使用who命令查询登录用户名称。接着可以输入要发送的信息。当输入完毕后,键入EOF表示信息结束,用Crtl+D组合键发送信息。输入内容会出现在用户的屏幕上,同时通信中止。 如果在网络上可以使用write命令在username后加入主机名称或域名,建立网络通信。如果要和cao主机上的bj用户通信使用命令: #write bj@cao 可以使用rusers命令列出所有局域网上的登录用户。 wall命令 如果想要发送一条信息给系统中所有用户,可以使用wall命令,wall表示:write all。输入wall,然后编辑信息,如果shell支持可以使用中文。然后使用Crtl+D组合键发送信息。这样系统所有登录用户的桌面会收到信息。如果在网络上,可以使用rwall命令把信息发送到局域网上所有的用户。 talk命令 talk命令可以和另一个登录系统用户实现双向对话。系统管理员输入信息,用户也可以输入自己的信息。双方都可以看到交流时的屏幕信息。格式: #talk username 一个例子: #talk b 对方屏幕显示: Message from Talk_Daemon@www.cao.comat 7:18 ... talk: connection requested by b@www.cao.com. talk: respond with: talk b@www.cao.com 然后进入talk分屏界面,双方输入的信息。会出现的对方的屏幕。 用户完成会话后使用Crth+C断开连接。和write一样可以使用在username后加入主机名称或域名,建立网络会话连接。 mesg 命令 用户可以阻止其他用户给自己发送消息打断工作,使用mesg n命令禁止其他用户发送消息。当别人试图再使用write给他发送信息时,发送者将会看见提示: #write: user has messages disabled on pts/n? 但是超级用户可以给任何用户发送消息,即使用户使用mesg n命令。要恢复接受信息输入: mesg -y 在UNIX操作系统中,为了通知用户某条信息,我们常常采用向用户能看到的屏幕写信息的方法实现。 向单一屏幕发送信息 每个登录主机系统的用户都分配有一个终端号,例如主控台上的12个屏幕分别为tty01~tty12,从多用户卡上登录一般有tty2a、tty2b、tty21a……等等终端设备号,如果是远程登录则为ttyp0、ttyp1等虚拟终端号。它们对应的终端设备文件都在/dev目录下。 echo'让我告诉你:……' > /dev/tty03 这种方法使用了输出转向符“>”直接写终端文件/dev/tty03来实现向屏幕发送信息。与以下其他三种方式不同的是,这种方法是针对终端的,而不是针对登录用户的,所以即使该终端没有用户登录,使用这种方法也可以向屏幕发送信息。但其他三种方法只能对有用户登录的屏幕发送信息。 向指定用户发送信息 同一个系统用户可以在多个终端登录,例如超级用户可以在主控台三号屏幕,同时也可以在多用户卡连接的tty21c终端登录。此时要向指定屏幕发送信息可以用write命令。 write root tty03 如果用户只在一个屏幕登录,可以省略第二个参数。利用这个命令可以实现聊天功能,因为每次回车后信息即发送至指定屏幕,这种特性是其他几种发送信息方式无法实现的。“终止”使用Ctrl+d组合键。 向登录主机的所有用户发送信息 多用户系统特有的广播概念:像无线广播一样,让所有人都听到你的声音。 wall wall -g group wall -g root see.txt 例子中“-g”参数指定用户组,实现向特定组发送信息的功能。换言之,系统中有多个用户组登录,你只想将信息广播到ROOT超级用户组属性登录的用户屏幕,可以用“-g root”参数。无参数的wall命令向所有登录系统的用户发送屏幕信息,一般用于要紧急关机的场合,提示用户在规定时间保存资料、退出系统。要广播的信息可以是一个文本文件中的内容,也可以直接输入,但与write不同的是,直接输入时每行信息回车后并不发送,只有在Ctrl+d组合键确认输入结束后才全部发送。需要注意的是:如果系统中无其他用户登录,各个屏幕(终端)都处于Login:等待登录状态,那么wall命令发送的信息就不会显示在屏幕上。 向网络中的用户屏幕发送信息 上面的三种方法只能对本地主机的屏幕发送信息,实际工作中我们会需要向网络中多台Unix主机的用户屏幕做同样的操作,以便统一行动,此时就要用到网络广播命令rwall。 rwall 123.45.67.89 < see.txt 它的参数就是要接受信息的Unix主机IP地址,使用“<”转向符将文本文件信息发送到指定主机的所有有用户登录的屏幕上。rwall命令不需要登录对方主机,不需要口令。实际应用中一般都作成一个shell文档,将要接受信息的主机列入其中,然后统一发送。例如shell文档为gb: rwall 123.45.67.89 < $1 rwall 123.45.67.90 < $1 rwall 123.45.67.91 < $1 …… 发送信息时:./gb see.txt。 同样,远程主机的屏幕只有有用户登录才能接受到信息,在login:状态下不会有信息发送到屏幕上。如果对方主机已经关闭,或者线路出现故障,系统会提示:“Couldn't contact 123.45.67.89 : RPC : Timed out”。 以上方法、命令在SCO Unix5.05系统中测试通过,在其他Unix系统中可能命令的具体形式会有所变化。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值