【问题标题】:Linux message to all terminalsLinux消息到所有终端
【发布时间】:2016-07-06 16:07:01
【问题描述】:

当我尝试通过echo "some message" > /dev/pts/* 向所有终端发送一些消息时,效果很好。但是当我通过 bash 脚本做同样的事情时,就会发生错误:myscript.sh: line 2: /dev/pts/*: Permission denied。即使我将最高权限设置为myscript.sh。我该怎么做才能让它发挥作用?

read msg
echo $msg > /dev/pts/*

【问题讨论】:

  • 你用 bash 还是 sh 解释文件?无论它是哪种外壳,它似乎都不会扩展全局。使用相同的 shell 来运行您在交互式会话中使用的脚本。

标签: linux


【解决方案1】:

看墙命令了吗?

http://linux.die.net/man/1/wall

您需要权限才能执行此操作,但这里描述了一种解决方法

How do I broadcast messages to all bash terminal in python using wall command with stdin?

【讨论】:

  • 为什么?你得到什么错误?看你的路径,它应该存在于/usr/sbin,因为它是一个管理工具
  • 好的,对于您的特定问题,您也可以尝试:source
  • 当我输入wall -n <some message> 并且没有错误时,任何终端都不会出现任何内容。我当然是以 root 身份输入的。
  • 墙侧,root用户可以通过在/etc/profile中设置mesg y来启用,所以它成为所有用户的默认设置。对于脚本,我不确定为什么它的行为方式不同,请在运行时像source myscript.sh 一样分享结果,无论有没有shell 行(#!/bin/sh 或#!/bin/bash)
  • 当我尝试将#!/bin/bash#!/bin/sh 添加到myscript.sh 时,会出现其他错误:myscript.sh: line 3: /dev/pts/*: ambiguous redirectsource myscript.sh 是错误:myscript.sh:3: permission denied: /dev/pts/ptmx
猜你喜欢
  • 2017-07-25
  • 2013-12-02
  • 1970-01-01
  • 2015-09-04
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多