【问题标题】:Getting logs of cronjob script execution with logs in the body of the email使用电子邮件正文中的日志获取 cronjob 脚本执行日志
【发布时间】:2018-12-21 20:30:54
【问题描述】:

我正在尝试让 cron 作业在脚本执行后直接向我发送一封电子邮件,并将最后的日志记录到电子邮件的正文中

21 14 * * * /opt/anaconda/bin/python /Path/to/Script/script.py >> /Path/to/logfile/log.txt 2>&1 | mail -s "cronjob OK" "first@mail.x,second@mail.x"

我怎么能这样做?我应该添加什么?

提前致谢。

【问题讨论】:

  • 您并没有真正描述问题。但是,我认为不将任何内容通过管道传输到文件/手动调用mail 是最简单的。只需在 cronjob-line 之前设置MAILTO=first@mail.x,second@mail.x,Cron 应该已经向您发送任何输出。鉴于您的系统能够发送电子邮件。

标签: linux shell email cron


【解决方案1】:

您的脚本没有产生任何输出,因为您只是将它重定向到一个文件。

cron 无论如何都会通过电子邮件将任何输出发送给 cron 作业的所有者。在某些cron 实现中,您可以使用MAILTO 指定不同的地址。

MAILTO=first@mail.x,second@mail.x
21 14 * * * /opt/anaconda/bin/python /Path/to/Script/script.py 2>&1 | tee -a /Path/to/logfile/log.txt

tee 命令将标准输入的副本保存到文件(-a 表示追加而不是覆盖)和标准输出。

如果您需要对生成的消息进行更多控制(例如,如果 Cron 不可接受,则使用不同的 Subject: 标头)可以保留 tee,但将管道放回 mail

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2013-07-20
    • 2019-04-21
    • 1970-01-01
    • 2017-08-15
    相关资源
    最近更新 更多