所以我在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
这应该完全避免这个问题.您需要在结果输出中提供自己的横幅.