wall
是一个命令行程序,可向所有已登录用户终端发送消息。消息可以是在终端上键入消息,也可以是在文件读取消息。
使用wall命令发送的消息意味会发送给所有用户,如果仅需要向指定用户发送消息请使用write
命令。
通常,系统管理员经常发送宣布维护消息,并要求关闭所有打开的程序或者注销登录。
在用户终端打开时,消息将显示给所有已登录的用户。如果用户没有打开终端或者图形桌面环境的用户将看不到此消息。
每个用户都可以使用mesg
命令控制终端的写访问。root用户运行wall
命令时,无论其终端设置如何,所有用户都会收到消息。
wall命令选项
wall
命令语法形式是wall [OPTIONS] [|]
。如果未指定文件,wall
命令从标准输入中读取消息。
广播消息的最直接方法是以消息作为参数运行调用wall
命令。例如命令wall "The system will be restarted in 10 minutes."
。
消息将会广播给当前已登录的用户,如果你需要查看所有已登录用户,请运行w命令或who命令。
要隐藏横幅并仅显示您输入的文本给登录用户,请使用-n
/--nobanner
选项运行wall命令。
who
wall "The system will be restarted in 10 minutes."
wall -n "The system will be restarted in 10 minutes."
Broadcast message from root@myfreax.host (pts/0) (Sun Oct 4 19:22:07 2020):
The system will be restarted in 10 minutes.
The system will be restarted in 10 minutes.
多行消息
如果要编写多行消息,请不要使用任何选项和参数运行wall命令。wall
命令将等待您输入文本。输入完成后,请按Ctrl+D
结束输入并广播信息。
您也可以使用heredoc重定向或将另一个命令的输出通过管道传递到wall
。
例如命令echo "The system will be restarted in 10 minutes. \nPlease save your work." | wall
,这是使用echo命令广播多行消息的示例。
wall
echo "The system will be restarted in 10 minutes. \nPlease save your work." | wall
广播文件消息
如果您要定期发送相同的消息,则可以将消息写入一个文件,这样就无需重新输入相同的文本。
仅当以root用户运行wall命令时从文件读取消息。要广播文件消息,请运行wall
命令,后跟文件名。
wall message1_file.txt
Broadcast message from root@myfreax.host (pts/0) (Sun Oct 4 19:25:06 2020):
The system will be restarted in 10 minutes.
向用户组广播消息
要仅向指定组的成员发送消息,请使用-g
/--group
选项运行wall命令,然后输入组名。
例如,要仅发送消息给devs
组的成员,请运行命令wall -g devs "The system will be restarted in 10 minutes."
。
除了使用组的名称之外,你也可以通过GID指定要接收消息的组。
wall -g devs "The system will be restarted in 10 minutes."
结论
wall
命令向所有当前登录的用户的终端发送消息。如有任何疑问,请随时发表评论。