- 我有一个 cron 作业,每小时执行一个 R 脚本。
- 该脚本检查每天在未知时间更新的在线数据源。
- 如果数据源未更新,脚本将退出并显示错误代码。
- 如果源已更新,脚本将正常运行,不会出现任何错误代码。
- 脚本完成后,我需要开始手动工作流程。
- 我希望在 cronjob 完成时收到通知,以便我知道何时开始我的工作流程。
我考虑过做的事情,但发现很糟糕/不正确:
- 从 R 脚本中发送电子邮件
- 脚本成功时生成错误
我想做的事:
- 执行成功后发送定制的cron通知邮件
- 我还没有考虑过更好的事情
答案1
将如下内容添加到 cron 作业命令行的末尾:
&& date | sendmail -s "R job completed successfully" [email protected]
这将通过电子邮件向您发送成功警报,并且非零退出代码将由 cron 正常处理。
是、、或任何您想要用来生成消息正文的内容的date
占位符。echo
printf
cat
顺便说一句,我使用sendmail
而不是mail
因为不同版本的sendmail
命令行选项比不同的实现具有更一致的处理命令行选项mail
。
或者,让您的 R 作业在标准输出上生成输出。除非配置为不这样做,否则 cron 会将 stdout 和 stderr 从 cron 作业通过电子邮件发送给作业的所有者。
显式使用sendmail
不是必需的 - 它只是让您设置主题、收件人地址、发件人地址、添加标头等。
cron
只会发送给作业的所有者(您)或 crontab 中 MAILTO 变量中设置的任何电子邮件地址。 cron 还将设置主题:包含Cron <user@host>
后跟 cron 执行的命令。