linux – Cronjob stderr提交和发送电子邮件

前端之家收集整理的这篇文章主要介绍了linux – Cronjob stderr提交和发送电子邮件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要我的cronjobs继续在某些文件输出错误,但我也希望它们能够同时通过电子邮件发送.没有一些技巧,这似乎是不可能的.

我发现this但没有帮助我.

最简单的方法是什么?

解决方法

如果我正确理解您的问题,您希望将错误(不输出)发送到日志文件,并通过电子邮件发送.

为此,请使用tee和stdout / stderr重定向的组合.

根据cron(8)手册页,cron可以为您处理电子邮件.无需不必重复这项工作.

When executing commands,any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab,if such exists).

这里的技巧是将STDERR发送到日志文件和电子邮件,但不是STDOUT.以下示例说明了如何执行此操作.

假设我的脚本执行以下命令. ls tmp / foo成功,因此输出转到STDOUT. ls tmp / bar会生成错误,因此将此输出发送到STDERR.

$ls tmp/foo tmp/bar
ls: tmp/bar: No such file or directory
tmp/foo

以下cronjob将隐藏任何STDOUT,但会将STDERR重定向到/var/log/test.log

* * * * * ls tmp/foo tmp/bar 2>&1 >/dev/null | tee -a $HOME/var/log/test.log

结果如下.电子邮件和〜/ var / log / test.log都会说同样的话.

电子邮件正文说:

ls: tmp/bar: No such file or directory

日志文件说同样的事情:

$cat ~/var/log/test.log
ls: tmp/bar: No such file or directory

作为额外的奖励,还可以发送STDERR& STDOUT到日志文件(您只偶尔查看),但是将STDERR发送到屏幕(如果手动运行)或电子邮件(如果从cron运行).我将以下snippit用于长时间运行的构建文件.

{ { ./configure && make && make install ; } >> $LOGFILE ; } 2>&1 | tee -a $LOGFILE

猜你在找的Linux相关文章