Cron
如何通過“牆”靜默廣播來自 cronjob 的警告?
所以我在一台 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
保持沉默?廣播有效,但我不想將這些電子郵件放在我的根郵箱中。# wall -V wall from util-linux 2.27.1
看看牆上的原始碼,它說:
259 if (print_banner == TRUE) { ... ... 271 where = ttyname(STDOUT_FILENO);
此
ttyname
呼叫是您的問題的原因,因為 cron 不執行 TTY。這樣做是因為 tty 名稱在橫幅消息 IE 中Broadcast message from user@host (pts/0)
根據邏輯,但是如果您不告訴它列印橫幅,它不會嘗試此操作。通過像這樣呼叫來避免這個問題是微不足道的
wall
:if ... echo "warning" | wall -n 2>&1 > /dev/null fi
這應該完全避免這個問題。但是,您需要在結果輸出中提供自己的橫幅。