当 cron 完成时如何获得电子邮件通知和登录文件(两者)

Ara*_*nda 7 email logging centos cron

我是 linux 的新手。我想弄清楚事情。有人可以帮助我如何组合这两个命令吗?

(1) 通常可以通过以下方式编辑 crontab 将 cron can 结果定向到日志文件

*/10 * * * * /scripts/mysc.sh >> /home/ara/Desktop/test/log.txt 2>&1 
Run Code Online (Sandbox Code Playgroud)

(2) 如果我们需要 cron 结果作为电子邮件,我们可以使用MAILTO=someemail@domain.com例如

MAILTO=someemail@domain.com
*/10 * * * * /scripts/mysc.sh
Run Code Online (Sandbox Code Playgroud)

但是如何将选项(1)和(2)结合起来呢?我看到一些虚拟主机空间确实同时启用了这两个选项。我做了我的研究/谷歌搜索,但没有做到。我正在使用 centos 6.5 并用于crontab -e编辑。

小智 9

您的第一个示例将 stderr 和 stdout 都发送到文件 (2>&1) ;在 cron 中设置的 MAILTO 变量将捕获任何未重定向的输出,这与将输出定向到文件相结合意味着没有输出可用于 cron 发送电子邮件。

我建议使用 tee 将输出附加到文件并将其发送到标准输出;这个答案 - https://serverfault.com/a/472878/102867 - 与您要求实现的非常相似。

或者,按照第一个答案中的建议,编写一个包装脚本来更优雅地处理脚本的输出,然后您可以同时记录并邮寄您的脚本输出