Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103717750
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-08 23:22:50

作者:abiscn  出处:Unix爱好者家园unix-cd.com   
[face=楷体_GB2312]在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系统中可能命令的具体形式会有所变化。
阅读(556) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~