我有一个这样的 cronjob:
[email protected]
30 00 * * * root /run/this/script.sh
有没有办法告诉 cron 根据退出代码将邮件发送到不同的邮件地址?我的意思是,cron 可以发送电子邮件到[电子邮件保护]如果 script.sh 返回 0 或发送到[电子邮件保护]以防万一出现问题?还是我必须在包装器脚本中执行此操作?
答案1
您必须在包装脚本中执行此操作。
答案2
不,cron 将所有输出发送给指定用户。
通常,所有 cron 作业都应将 STDOUT 重定向到 /dev/null,因为您不想向用户发送服务器上运行的所有 cron 作业的垃圾邮件。
如果您这样做(重定向),则只有在发生故障时您才会收到电子邮件。
答案3
查看https://cronitor.io。如果您的工作失败,它可以向您发送警报。您可以像这样编写 cron 命令:
0 * * * * /path/to/my_cron_job.sh || curl https://cronitor.link/d3x0/fail
您还可以 ping /complete 端点来指示成功,并且可以制定一条规则,例如“如果我在 24 小时内没有成功/完成 ping,请提醒我”。
答案4
是的,你可以这样做。只需添加> /dev/null在您的 CRON 脚本之后。
MAILTO="[email protected]" 30 00 * * * root /run/this/script.sh > /dev/null