Linux中的Wall命令

评论 0 浏览 0 2020-10-06

wall是一个命令行工具,在所有登录用户的终端上显示一条信息。这些信息可以是在终端上输入的,也可以是文件的内容。wall代表写所有,要想只向一个特定的用户发送消息,请使用write命令。

通常情况下,系统管理员会发送消息宣布维护,并要求用户退出并关闭所有打开的程序。这些信息会显示给所有打开终端的登录用户。使用图形化桌面环境且没有打开终端的用户不会看到这些信息。每个用户都可以用mesg工具控制对其终端的写入权限。当超级用户调用wall命令时,所有用户都会收到信息,不管他们的mesg设置如何。

广播式信息

wall命令的句法如下。

wall [OPTIONS] [<FILE>|<MESSAGE>]

如果没有指定文件,wall会从标准输入中读取信息。

广播信息最直接的方法是调用wall命令,并将信息作为参数。

wall "The system will be restarted in 10 minutes."

输出

Broadcast message from root@linuxize.host (pts/0) (Sun Oct  4 19:22:07 2020):

The system will be restarted in 10 minutes.

该信息将被广播给当前登录的所有用户。

要查看所有登录的用户,请运行wwho命令。

要抑制横幅,只向登录的用户显示你键入的文本,请用-n(--nobanner)选项调用该命令。

wall -n "The system will be restarted in 10 minutes."

输出

The system will be restarted in 10 minutes.

如果你想写多行信息,请在没有参数的情况下调用该命令。

wall

wall命令将等待你输入文字。当你输入完信息后,按Ctrl+D来结束程序并广播信息。

你也可以使用here-string重定向或用管道将另一个命令的输出转到wall。下面是一个例子,说明如何使用echo命令来广播多行信息。

echo "The system will be restarted in 10 minutes. \nPlease save your work."  | wall

从一个文件中广播消息

如果你经常发送相同的信息,你可以把每条信息写到一个文件中,这样你就不需要重新输入相同的文字。wall只有在以root身份调用时才会从文件中读取。

要广播一个文件的内容,请调用wall命令,并在后面加上文件名。

message1_file.txt
The system will be restarted in 10 minutes.
wall message1_file.txt

输出

Broadcast message from root@linuxize.host (pts/0) (Sun Oct  4 19:25:06 2020):

The system will be restarted in 10 minutes.

向群组广播信息

要想只向某个给定组的成员发送信息,在运行命令时要加上-g(--group)选项,然后再加上组名。例如,要想只在 "devs "组成员的终端上写信息,你可以运行。

wall -g devs "The system will be restarted in 10 minutes."

该组也可以通过其GID(组ID)来指定。

总结

wall命令在所有当前登录的用户的终端上写下一条信息。

如果你有任何问题,请随时留言评论。

最后更新2023-08-11
0 个评论
标签