标题总结了它。运行wall <<< "TEST"在任何 TTY 中显示消息,但不在任何 GUI 终端中显示(使用gnome-terminal和测试sakura)。
我有几个依赖于wall消息的电池和温度监控脚本,在最近升级到 16.04 后,我注意到它们在 GUI 中停止工作。
我无法确定这是错误还是阻止消息在 GUI 中显示的原因。
我应该如何进行?
附加信息:
byobu在 gui 终端中运行确实允许查看墙消息
小智 5
由于 gnome-terminal 的工作方式,wall不会将其注册为终端。更详尽的解释可以在这里找到。我认为樱花也是如此。
基于Stancu Mihai 的回答,我创建了一个模仿wall通常工作方式的脚本,包括带有用户名和时间戳的横幅(使用 -n 或 --nobanner 删除横幅)。该脚本目前不支持从文件中读取消息。
您可以wall通过在~/.bashrc以下位置添加别名来替换普通命令:
echo 'alias wall="~/your/path/to/wall.sh"' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
用法示例:
$ wall "some message"
Broadcast message from username@hostname (pts/19) (Wed Mar 29 11:07:35 2017):
some message
$ wall -h
Usage:
wall [options] [message]
Write a message to all users.
Options:
-n, --nobanner do not print banner
-h, --help display this help and exit
Run Code Online (Sandbox Code Playgroud)
是的,gnome-terminal 确实不会更新登录记录,因此我尝试找出另一个解决方案:
ps -ef | grep " pts/" | awk '{print $6}' | sort -u | tee terminals4message.txtRun Code Online (Sandbox Code Playgroud)
这可以帮助您列出所有桌面终端会话。
向活动桌面终端会话发送消息的另一种方法
echo "$MESSAGE_to_send" | sudo tee /dev/pts/$terminal_numberRun Code Online (Sandbox Code Playgroud)
ps -ef | grep " tty" | awk '{print $6}' | sort -u | grep -v "pts" | tee terminals4message.txtRun Code Online (Sandbox Code Playgroud)
这可以帮助您列出所有 pty 会话
cat terminals4message.txt | while read TTY_TO; do echo -e "SYSTEM MESAGE: $(date) - \n MESAJ" | sudo tee /dev/$TTY_TO 1>/dev/nullRun Code Online (Sandbox Code Playgroud)
alias wall="your_wall_replacement.sh"
这样你就不需要删除当前的墙抱歉,如果有什么不对劲的地方,因为有人没有让我专注于这个主题……如果你们注意到一些奇怪的事情,请发表评论。
10倍
| 归档时间: |
|
| 查看次数: |
4335 次 |
| 最近记录: |