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

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

发布时间:2020-12-13 18:17:52 所属栏目:Linux 来源:网络整理
导读:我需要我的cronjobs继续在某些文件中输出错误,但我也希望它们能够同时通过电子邮件发送.没有一些技巧,这似乎是不可能的. 我发现this但没有帮助我. 最简单的方法是什么? 解决方法 如果我正确理解您的问题,您希望将错误(不输出)发送到日志文件,并通过电子邮件
我需要我的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

(编辑:李大同)

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

    推荐文章
      热点阅读