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

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

我是 Linux 新手。我正在尝试弄清楚一些事情。有人能帮我如何组合这两个命令吗?

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

*/10 * * * * /scripts/mysc.sh >> /home/ara/Desktop/test/log.txt 2>&1 

(2)如果我们需要将 cron 结果作为电子邮件发送,我们可以使用[email protected]如下方法

[email protected]
*/10 * * * * /scripts/mysc.sh

但是如何结合选项 (1) 和 (2)?我看到一些网站托管空间确实同时启用了这两个选项。我做了研究/谷歌搜索,但没有成功。我使用的是 centos 6.5 并用于crontab -e编辑。

答案1

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

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

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

答案2

用于日志和电子邮件的 Cronjob:

每月第一天的午夜运行一次:0 0 1 * *

0 0 1 * * /home/User/script.sh > /home/User/cronlog/`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "CronJob is run successfully" [email protected],[email protected]

相关内容