linux - 通过电子邮件正文中的日志获取 cronjob 脚本执行的日志

标签 linux shell email cron

我试图让 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"

我怎样才能做到这一点?我应该添加什么?

提前致谢。

最佳答案

您的脚本不会产生任何输出,因为您只是将其重定向到文件。

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 Not Acceptable ,则使用不同的主题: header ),可以保留 tee 但将管道放回 mail

关于linux - 通过电子邮件正文中的日志获取 cronjob 脚本执行的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51325460/

相关文章:

python - 从 ls -1hl 命令的输出中查找超过 100 MB 的文件

linux - lighttpd 和 php 403 - 禁止访问

linux - 如何在 vscode 中更改光标高度?

PHP mail() 函数不发送 HTML

email - 使用 MailGun 发送邮件时删除 'on behalf of'

linux - 如何停止缓存 'echo'

bash - 在 shell 中打印具有多行值的变量?

linux - 在另外 2 个模式之间搜索一个模式

linux - 控制寻呼机是否被任何程序使用的标准方法是什么(能够不使用寻呼机)?

php - 使用 Swiftmailer 时如何设置回复