![当 cron 完成时如何获取电子邮件通知和登录文件(两者)](https://linux22.com/image/636569/%E5%BD%93%20cron%20%E5%AE%8C%E6%88%90%E6%97%B6%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E9%80%9A%E7%9F%A5%E5%92%8C%E7%99%BB%E5%BD%95%E6%96%87%E4%BB%B6%EF%BC%88%E4%B8%A4%E8%80%85%EF%BC%89.png)
我是 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]