加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何通过“墙”默默地播放来自cronjob的警告?

发布时间:2020-12-14 03:04:17 所属栏目:Linux 来源:网络整理
导读:所以我在Ubuntu 16.04机器上有这个cronjob结束 if ... echo "warning" | wall 21 /dev/nullfi 我用它来警告所有用户正在进行的某些操作.虽然我将其输出重定向到/ dev / null,但脚本以某种方式设法输出 wall: cannot get tty name: Inappropriate ioctl for d
所以我在Ubuntu 16.04机器上有这个cronjob结束
if ...
  echo "warning" | wall 2>&1 > /dev/null
fi

我用它来警告所有用户正在进行的某些操作.虽然我将其输出重定向到/ dev / null,但脚本以某种方式设法输出

wall: cannot get tty name: Inappropriate ioctl for device

通过电子邮件发送到root帐户.如何让墙壁保持沉默?广播有效,但我不希望在我的根邮箱中收到这些电子邮件.

# wall -V
wall from util-linux 2.27.1

解决方法

看着墙上的来源,它说:
259          if (print_banner == TRUE) {
...
...
271                  where = ttyname(STDOUT_FILENO);

此ttyname调用是导致问题的原因,因为cron不运行TTY.这样做是因为tty名称在横幅消息I.E中

Broadcast message from user@host (pts/0)

根据逻辑,如果你不告诉它打印横幅,它不会尝试这个.通过调用这样的墙来避免这个问题是微不足道的:

if ...
  echo "warning" | wall -n 2>&1 > /dev/null
fi

这应该完全避免这个问题.您需要在结果输出中提供自己的横幅.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读