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
The system will be restarted in 10 minutes.
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命令向所有当前登录的用户的终端发送消息。如有任何疑问,请随时发表评论。